@neohm/nestend 1.0.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/README.md +316 -18
  2. package/dist/admin/admin.module.d.ts +8 -0
  3. package/dist/admin/admin.module.d.ts.map +1 -0
  4. package/dist/admin/admin.module.js +36 -0
  5. package/dist/admin/admin.module.js.map +1 -0
  6. package/dist/admin/controllers/admin.scheduled.task.controller.d.ts +18 -0
  7. package/dist/admin/controllers/admin.scheduled.task.controller.d.ts.map +1 -0
  8. package/dist/admin/controllers/admin.scheduled.task.controller.js +68 -0
  9. package/dist/admin/controllers/admin.scheduled.task.controller.js.map +1 -0
  10. package/dist/admin/controllers/admin.tenant.controller.d.ts +18 -0
  11. package/dist/admin/controllers/admin.tenant.controller.d.ts.map +1 -0
  12. package/dist/admin/controllers/admin.tenant.controller.js +68 -0
  13. package/dist/admin/controllers/admin.tenant.controller.js.map +1 -0
  14. package/dist/admin/controllers/admin.user.controller.d.ts +14 -0
  15. package/dist/admin/controllers/admin.user.controller.d.ts.map +1 -0
  16. package/dist/admin/controllers/admin.user.controller.js +85 -0
  17. package/dist/admin/controllers/admin.user.controller.js.map +1 -0
  18. package/dist/admin/dtos/add.admin.user.dto.d.ts +5 -0
  19. package/dist/admin/dtos/add.admin.user.dto.d.ts.map +1 -0
  20. package/dist/admin/dtos/add.admin.user.dto.js +30 -0
  21. package/dist/admin/dtos/add.admin.user.dto.js.map +1 -0
  22. package/dist/admin/dtos/add.bulk.users.dto.d.ts +8 -0
  23. package/dist/admin/dtos/add.bulk.users.dto.d.ts.map +1 -0
  24. package/dist/admin/dtos/add.bulk.users.dto.js +38 -0
  25. package/dist/admin/dtos/add.bulk.users.dto.js.map +1 -0
  26. package/dist/admin/dtos/add.client.user.dto.d.ts +5 -0
  27. package/dist/admin/dtos/add.client.user.dto.d.ts.map +1 -0
  28. package/dist/admin/dtos/add.client.user.dto.js +25 -0
  29. package/dist/admin/dtos/add.client.user.dto.js.map +1 -0
  30. package/dist/admin/dtos/add.scheduled.task.dto.d.ts +13 -0
  31. package/dist/admin/dtos/add.scheduled.task.dto.d.ts.map +1 -0
  32. package/dist/admin/dtos/add.scheduled.task.dto.js +76 -0
  33. package/dist/admin/dtos/add.scheduled.task.dto.js.map +1 -0
  34. package/dist/admin/dtos/add.tenant.dto.d.ts +18 -0
  35. package/dist/admin/dtos/add.tenant.dto.d.ts.map +1 -0
  36. package/dist/admin/dtos/add.tenant.dto.js +127 -0
  37. package/dist/admin/dtos/add.tenant.dto.js.map +1 -0
  38. package/dist/admin/dtos/base.user.dto.d.ts +12 -0
  39. package/dist/admin/dtos/base.user.dto.d.ts.map +1 -0
  40. package/dist/admin/dtos/base.user.dto.js +81 -0
  41. package/dist/admin/dtos/base.user.dto.js.map +1 -0
  42. package/dist/admin/dtos/scheduled.task.list.dto.d.ts +4 -0
  43. package/dist/admin/dtos/scheduled.task.list.dto.d.ts.map +1 -0
  44. package/dist/admin/dtos/scheduled.task.list.dto.js +8 -0
  45. package/dist/admin/dtos/scheduled.task.list.dto.js.map +1 -0
  46. package/dist/admin/dtos/tenant.list.dto.d.ts +4 -0
  47. package/dist/admin/dtos/tenant.list.dto.d.ts.map +1 -0
  48. package/dist/admin/dtos/tenant.list.dto.js +8 -0
  49. package/dist/admin/dtos/tenant.list.dto.js.map +1 -0
  50. package/dist/admin/es6.classes.d.ts +23 -0
  51. package/dist/admin/es6.classes.d.ts.map +1 -0
  52. package/dist/admin/es6.classes.js +31 -0
  53. package/dist/admin/es6.classes.js.map +1 -0
  54. package/dist/admin/libraries/admin.user.data.processor.d.ts +10 -0
  55. package/dist/admin/libraries/admin.user.data.processor.d.ts.map +1 -0
  56. package/dist/admin/libraries/admin.user.data.processor.js +39 -0
  57. package/dist/admin/libraries/admin.user.data.processor.js.map +1 -0
  58. package/dist/admin/libraries/bulk.user.data.processor.d.ts +19 -0
  59. package/dist/admin/libraries/bulk.user.data.processor.d.ts.map +1 -0
  60. package/dist/admin/libraries/bulk.user.data.processor.js +82 -0
  61. package/dist/admin/libraries/bulk.user.data.processor.js.map +1 -0
  62. package/dist/admin/libraries/client.user.data.processor.d.ts +13 -0
  63. package/dist/admin/libraries/client.user.data.processor.d.ts.map +1 -0
  64. package/dist/admin/libraries/client.user.data.processor.js +47 -0
  65. package/dist/admin/libraries/client.user.data.processor.js.map +1 -0
  66. package/dist/admin/libraries/scheduled.task.data.processor.d.ts +13 -0
  67. package/dist/admin/libraries/scheduled.task.data.processor.d.ts.map +1 -0
  68. package/dist/admin/libraries/scheduled.task.data.processor.js +45 -0
  69. package/dist/admin/libraries/scheduled.task.data.processor.js.map +1 -0
  70. package/dist/admin/libraries/scheduled.task.list.processor.d.ts +12 -0
  71. package/dist/admin/libraries/scheduled.task.list.processor.d.ts.map +1 -0
  72. package/dist/admin/libraries/scheduled.task.list.processor.js +27 -0
  73. package/dist/admin/libraries/scheduled.task.list.processor.js.map +1 -0
  74. package/dist/admin/libraries/tenant.data.processor.d.ts +13 -0
  75. package/dist/admin/libraries/tenant.data.processor.d.ts.map +1 -0
  76. package/dist/admin/libraries/tenant.data.processor.js +51 -0
  77. package/dist/admin/libraries/tenant.data.processor.js.map +1 -0
  78. package/dist/admin/libraries/tenant.list.processor.d.ts +12 -0
  79. package/dist/admin/libraries/tenant.list.processor.d.ts.map +1 -0
  80. package/dist/admin/libraries/tenant.list.processor.js +31 -0
  81. package/dist/admin/libraries/tenant.list.processor.js.map +1 -0
  82. package/dist/admin/libraries/user.data.processor.d.ts +18 -0
  83. package/dist/admin/libraries/user.data.processor.d.ts.map +1 -0
  84. package/dist/admin/libraries/user.data.processor.js +62 -0
  85. package/dist/admin/libraries/user.data.processor.js.map +1 -0
  86. package/dist/admin/services/admin.access.service.d.ts +14 -0
  87. package/dist/admin/services/admin.access.service.d.ts.map +1 -0
  88. package/dist/admin/services/admin.access.service.js +60 -0
  89. package/dist/admin/services/admin.access.service.js.map +1 -0
  90. package/dist/app.controller.js +0 -1
  91. package/dist/app.controller.js.map +1 -1
  92. package/dist/app.module.d.ts.map +1 -1
  93. package/dist/app.module.js +14 -1
  94. package/dist/app.module.js.map +1 -1
  95. package/dist/auth/auth.module.d.ts.map +1 -1
  96. package/dist/auth/auth.module.js +23 -16
  97. package/dist/auth/auth.module.js.map +1 -1
  98. package/dist/auth/controllers/auth.controller.d.ts +30 -0
  99. package/dist/auth/controllers/auth.controller.d.ts.map +1 -0
  100. package/dist/auth/controllers/auth.controller.js +147 -0
  101. package/dist/auth/controllers/auth.controller.js.map +1 -0
  102. package/dist/auth/dtos/change.password.dto.d.ts +5 -0
  103. package/dist/auth/dtos/change.password.dto.d.ts.map +1 -0
  104. package/dist/auth/dtos/change.password.dto.js +31 -0
  105. package/dist/auth/dtos/change.password.dto.js.map +1 -0
  106. package/dist/auth/dtos/google.login.dto.d.ts +4 -0
  107. package/dist/auth/dtos/google.login.dto.d.ts.map +1 -0
  108. package/dist/auth/dtos/google.login.dto.js +26 -0
  109. package/dist/auth/dtos/google.login.dto.js.map +1 -0
  110. package/dist/auth/dtos/login.dto.d.ts +5 -0
  111. package/dist/auth/dtos/login.dto.d.ts.map +1 -0
  112. package/dist/auth/dtos/login.dto.js +29 -0
  113. package/dist/auth/dtos/login.dto.js.map +1 -0
  114. package/dist/auth/dtos/refresh.token.dto.d.ts +4 -0
  115. package/dist/auth/dtos/refresh.token.dto.d.ts.map +1 -0
  116. package/dist/auth/dtos/refresh.token.dto.js +24 -0
  117. package/dist/auth/dtos/refresh.token.dto.js.map +1 -0
  118. package/dist/auth/dtos/register.dto.d.ts +9 -0
  119. package/dist/auth/dtos/register.dto.d.ts.map +1 -0
  120. package/dist/auth/dtos/register.dto.js +59 -0
  121. package/dist/auth/dtos/register.dto.js.map +1 -0
  122. package/dist/auth/entities/api.key.entity.js +0 -8
  123. package/dist/auth/entities/api.key.entity.js.map +1 -1
  124. package/dist/auth/entities/system.refresh.token.entity.js +0 -7
  125. package/dist/auth/entities/system.refresh.token.entity.js.map +1 -1
  126. package/dist/auth/entities/system.role.entity.js +0 -7
  127. package/dist/auth/entities/system.role.entity.js.map +1 -1
  128. package/dist/auth/entities/user.details.entity.js +0 -14
  129. package/dist/auth/entities/user.details.entity.js.map +1 -1
  130. package/dist/auth/entities/user.entity.d.ts +5 -0
  131. package/dist/auth/entities/user.entity.d.ts.map +1 -1
  132. package/dist/auth/entities/user.entity.js +15 -13
  133. package/dist/auth/entities/user.entity.js.map +1 -1
  134. package/dist/auth/entities/user.role.entity.js +0 -4
  135. package/dist/auth/entities/user.role.entity.js.map +1 -1
  136. package/dist/auth/enums/auth.default.enum.d.ts +4 -0
  137. package/dist/auth/enums/auth.default.enum.d.ts.map +1 -0
  138. package/dist/auth/enums/auth.default.enum.js +8 -0
  139. package/dist/auth/enums/auth.default.enum.js.map +1 -0
  140. package/dist/auth/enums/global.admin.roles.enum.d.ts +7 -0
  141. package/dist/auth/enums/global.admin.roles.enum.d.ts.map +1 -0
  142. package/dist/auth/enums/global.admin.roles.enum.js +11 -0
  143. package/dist/auth/enums/global.admin.roles.enum.js.map +1 -0
  144. package/dist/auth/enums/google.auth.default.enum.d.ts +10 -0
  145. package/dist/auth/enums/google.auth.default.enum.d.ts.map +1 -0
  146. package/dist/auth/enums/google.auth.default.enum.js +15 -0
  147. package/dist/auth/enums/google.auth.default.enum.js.map +1 -0
  148. package/dist/auth/enums/user.type.enum.d.ts +5 -0
  149. package/dist/auth/enums/user.type.enum.d.ts.map +1 -0
  150. package/dist/auth/enums/user.type.enum.js +9 -0
  151. package/dist/auth/enums/user.type.enum.js.map +1 -0
  152. package/dist/auth/es6.classes.d.ts +24 -13
  153. package/dist/auth/es6.classes.d.ts.map +1 -1
  154. package/dist/auth/es6.classes.js +26 -13
  155. package/dist/auth/es6.classes.js.map +1 -1
  156. package/dist/auth/guards/api.key.guard.js +0 -2
  157. package/dist/auth/guards/api.key.guard.js.map +1 -1
  158. package/dist/auth/guards/jwt.auth.guard.js +0 -1
  159. package/dist/auth/guards/jwt.auth.guard.js.map +1 -1
  160. package/dist/auth/jobs/system.refresh.token.job.js +0 -1
  161. package/dist/auth/jobs/system.refresh.token.job.js.map +1 -1
  162. package/dist/auth/jobs/system.role.job.js +0 -1
  163. package/dist/auth/jobs/system.role.job.js.map +1 -1
  164. package/dist/auth/jobs/user.details.job.js +0 -1
  165. package/dist/auth/jobs/user.details.job.js.map +1 -1
  166. package/dist/auth/jobs/user.job.js +0 -1
  167. package/dist/auth/jobs/user.job.js.map +1 -1
  168. package/dist/auth/jobs/user.role.job.js +0 -1
  169. package/dist/auth/jobs/user.role.job.js.map +1 -1
  170. package/dist/auth/middlewares/auth.context.middleware.d.ts +10 -0
  171. package/dist/auth/middlewares/auth.context.middleware.d.ts.map +1 -0
  172. package/dist/auth/middlewares/auth.context.middleware.js +37 -0
  173. package/dist/auth/middlewares/auth.context.middleware.js.map +1 -0
  174. package/dist/auth/processors/change.password.data.processor.d.ts +12 -0
  175. package/dist/auth/processors/change.password.data.processor.d.ts.map +1 -0
  176. package/dist/auth/processors/change.password.data.processor.js +47 -0
  177. package/dist/auth/processors/change.password.data.processor.js.map +1 -0
  178. package/dist/auth/processors/google.user.data.processor.d.ts +10 -0
  179. package/dist/auth/processors/google.user.data.processor.d.ts.map +1 -0
  180. package/dist/auth/processors/google.user.data.processor.js +41 -0
  181. package/dist/auth/processors/google.user.data.processor.js.map +1 -0
  182. package/dist/auth/processors/register.user.data.processor.d.ts +10 -0
  183. package/dist/auth/processors/register.user.data.processor.d.ts.map +1 -0
  184. package/dist/auth/processors/register.user.data.processor.js +40 -0
  185. package/dist/auth/processors/register.user.data.processor.js.map +1 -0
  186. package/dist/auth/services/api.key.service.js +1 -2
  187. package/dist/auth/services/api.key.service.js.map +1 -1
  188. package/dist/auth/services/auth.context.service.d.ts +9 -0
  189. package/dist/auth/services/auth.context.service.d.ts.map +1 -0
  190. package/dist/auth/services/auth.context.service.js +33 -0
  191. package/dist/auth/services/auth.context.service.js.map +1 -0
  192. package/dist/auth/services/auth.service.d.ts +7 -2
  193. package/dist/auth/services/auth.service.d.ts.map +1 -1
  194. package/dist/auth/services/auth.service.js +57 -6
  195. package/dist/auth/services/auth.service.js.map +1 -1
  196. package/dist/auth/services/google.auth.service.d.ts +8 -0
  197. package/dist/auth/services/google.auth.service.d.ts.map +1 -0
  198. package/dist/auth/services/google.auth.service.js +55 -0
  199. package/dist/auth/services/google.auth.service.js.map +1 -0
  200. package/dist/auth/strategy/jwt.strategy.js +0 -1
  201. package/dist/auth/strategy/jwt.strategy.js.map +1 -1
  202. package/dist/auth/subscribers/system.refresh.token.subscriber.js +0 -1
  203. package/dist/auth/subscribers/system.refresh.token.subscriber.js.map +1 -1
  204. package/dist/auth/subscribers/system.role.subscriber.js +0 -1
  205. package/dist/auth/subscribers/system.role.subscriber.js.map +1 -1
  206. package/dist/auth/subscribers/user.details.subscriber.js +0 -1
  207. package/dist/auth/subscribers/user.details.subscriber.js.map +1 -1
  208. package/dist/auth/subscribers/user.role.subscriber.js +0 -1
  209. package/dist/auth/subscribers/user.role.subscriber.js.map +1 -1
  210. package/dist/auth/subscribers/user.subscriber.d.ts.map +1 -1
  211. package/dist/auth/subscribers/user.subscriber.js +2 -3
  212. package/dist/auth/subscribers/user.subscriber.js.map +1 -1
  213. package/dist/auth/types/auth.types.d.ts +10 -0
  214. package/dist/auth/types/auth.types.d.ts.map +1 -1
  215. package/dist/auth/types/google.auth.types.d.ts +13 -0
  216. package/dist/auth/types/google.auth.types.d.ts.map +1 -0
  217. package/dist/auth/types/google.auth.types.js +3 -0
  218. package/dist/auth/types/google.auth.types.js.map +1 -0
  219. package/dist/auth/utilities/auth.utilities.d.ts +2 -0
  220. package/dist/auth/utilities/auth.utilities.d.ts.map +1 -1
  221. package/dist/auth/utilities/auth.utilities.js +8 -0
  222. package/dist/auth/utilities/auth.utilities.js.map +1 -1
  223. package/dist/common/adapters/sentry.monitoring.adapter.d.ts.map +1 -1
  224. package/dist/common/adapters/sentry.monitoring.adapter.js +3 -3
  225. package/dist/common/adapters/sentry.monitoring.adapter.js.map +1 -1
  226. package/dist/common/common.module.d.ts.map +1 -1
  227. package/dist/common/common.module.js +20 -6
  228. package/dist/common/common.module.js.map +1 -1
  229. package/dist/common/consumers/job.consumer.d.ts +20 -0
  230. package/dist/common/consumers/job.consumer.d.ts.map +1 -0
  231. package/dist/common/consumers/job.consumer.js +159 -0
  232. package/dist/common/consumers/job.consumer.js.map +1 -0
  233. package/dist/common/controllers/common.controller.d.ts +7 -0
  234. package/dist/common/controllers/common.controller.d.ts.map +1 -1
  235. package/dist/common/controllers/common.controller.js +19 -1
  236. package/dist/common/controllers/common.controller.js.map +1 -1
  237. package/dist/common/dtos/common.list.filter.dto.d.ts +10 -0
  238. package/dist/common/dtos/common.list.filter.dto.d.ts.map +1 -0
  239. package/dist/common/dtos/common.list.filter.dto.js +53 -0
  240. package/dist/common/dtos/common.list.filter.dto.js.map +1 -0
  241. package/dist/common/dtos/common.params.dto.js +0 -1
  242. package/dist/common/dtos/common.params.dto.js.map +1 -1
  243. package/dist/common/dtos/common.payload.dto.js +0 -1
  244. package/dist/common/dtos/common.payload.dto.js.map +1 -1
  245. package/dist/common/dtos/database.event.dto.d.ts +1 -1
  246. package/dist/common/dtos/database.event.dto.d.ts.map +1 -1
  247. package/dist/common/dtos/database.event.dto.js +0 -6
  248. package/dist/common/dtos/database.event.dto.js.map +1 -1
  249. package/dist/common/dtos/filter.dto.d.ts +9 -0
  250. package/dist/common/dtos/filter.dto.d.ts.map +1 -0
  251. package/dist/common/dtos/filter.dto.js +40 -0
  252. package/dist/common/dtos/filter.dto.js.map +1 -0
  253. package/dist/common/dtos/sort.dto.d.ts +6 -0
  254. package/dist/common/dtos/sort.dto.d.ts.map +1 -0
  255. package/dist/common/dtos/{paginated.query.dto.js → sort.dto.js} +12 -27
  256. package/dist/common/dtos/sort.dto.js.map +1 -0
  257. package/dist/common/entities/activity.log.entity.js +0 -6
  258. package/dist/common/entities/activity.log.entity.js.map +1 -1
  259. package/dist/common/entities/common.entity.js +0 -2
  260. package/dist/common/entities/common.entity.js.map +1 -1
  261. package/dist/common/entities/document.entity.js +0 -10
  262. package/dist/common/entities/document.entity.js.map +1 -1
  263. package/dist/common/entities/root.entity.d.ts +2 -3
  264. package/dist/common/entities/root.entity.d.ts.map +1 -1
  265. package/dist/common/entities/root.entity.js +0 -5
  266. package/dist/common/entities/root.entity.js.map +1 -1
  267. package/dist/common/entities/scheduled.event.entity.d.ts +13 -0
  268. package/dist/common/entities/scheduled.event.entity.d.ts.map +1 -0
  269. package/dist/common/entities/scheduled.event.entity.js +57 -0
  270. package/dist/common/entities/scheduled.event.entity.js.map +1 -0
  271. package/dist/common/entities/system.audit.log.entity.js +0 -8
  272. package/dist/common/entities/system.audit.log.entity.js.map +1 -1
  273. package/dist/common/entities/system.constant.entity.js +0 -6
  274. package/dist/common/entities/system.constant.entity.js.map +1 -1
  275. package/dist/common/entities/system.constant.type.entity.js +0 -5
  276. package/dist/common/entities/system.constant.type.entity.js.map +1 -1
  277. package/dist/common/entities/system.failed.job.entity.js +0 -7
  278. package/dist/common/entities/system.failed.job.entity.js.map +1 -1
  279. package/dist/common/entities/system.notification.entity.js +0 -9
  280. package/dist/common/entities/system.notification.entity.js.map +1 -1
  281. package/dist/common/entities/system.property.entity.js +0 -6
  282. package/dist/common/entities/system.property.entity.js.map +1 -1
  283. package/dist/common/entities/system.scheduled.task.entity.d.ts +13 -0
  284. package/dist/common/entities/system.scheduled.task.entity.d.ts.map +1 -0
  285. package/dist/common/entities/system.scheduled.task.entity.js +50 -0
  286. package/dist/common/entities/system.scheduled.task.entity.js.map +1 -0
  287. package/dist/common/enums/api.content.type.enum.d.ts +7 -0
  288. package/dist/common/enums/api.content.type.enum.d.ts.map +1 -0
  289. package/dist/common/enums/api.content.type.enum.js +11 -0
  290. package/dist/common/enums/api.content.type.enum.js.map +1 -0
  291. package/dist/common/enums/api.request.type.enum.d.ts +8 -0
  292. package/dist/common/enums/api.request.type.enum.d.ts.map +1 -0
  293. package/dist/common/enums/api.request.type.enum.js +12 -0
  294. package/dist/common/enums/api.request.type.enum.js.map +1 -0
  295. package/dist/common/enums/filter.operator.enum.d.ts +14 -0
  296. package/dist/common/enums/filter.operator.enum.d.ts.map +1 -0
  297. package/dist/common/enums/filter.operator.enum.js +18 -0
  298. package/dist/common/enums/filter.operator.enum.js.map +1 -0
  299. package/dist/common/enums/filter.value.type.enum.d.ts +7 -0
  300. package/dist/common/enums/filter.value.type.enum.d.ts.map +1 -0
  301. package/dist/common/enums/filter.value.type.enum.js +11 -0
  302. package/dist/common/enums/filter.value.type.enum.js.map +1 -0
  303. package/dist/common/enums/queue.enum.d.ts +3 -1
  304. package/dist/common/enums/queue.enum.d.ts.map +1 -1
  305. package/dist/common/enums/queue.enum.js +2 -0
  306. package/dist/common/enums/queue.enum.js.map +1 -1
  307. package/dist/common/enums/server.environment.enum.d.ts +7 -0
  308. package/dist/common/enums/server.environment.enum.d.ts.map +1 -0
  309. package/dist/common/enums/server.environment.enum.js +11 -0
  310. package/dist/common/enums/server.environment.enum.js.map +1 -0
  311. package/dist/common/enums/sort.direction.enum.d.ts +5 -0
  312. package/dist/common/enums/sort.direction.enum.d.ts.map +1 -0
  313. package/dist/common/enums/sort.direction.enum.js +9 -0
  314. package/dist/common/enums/sort.direction.enum.js.map +1 -0
  315. package/dist/common/enums/sql.default.enum.d.ts +7 -0
  316. package/dist/common/enums/sql.default.enum.d.ts.map +1 -0
  317. package/dist/common/enums/sql.default.enum.js +11 -0
  318. package/dist/common/enums/sql.default.enum.js.map +1 -0
  319. package/dist/common/enums/sql.target.enum.d.ts +5 -0
  320. package/dist/common/enums/sql.target.enum.d.ts.map +1 -0
  321. package/dist/common/enums/sql.target.enum.js +9 -0
  322. package/dist/common/enums/sql.target.enum.js.map +1 -0
  323. package/dist/common/es6.classes.d.ts +39 -23
  324. package/dist/common/es6.classes.d.ts.map +1 -1
  325. package/dist/common/es6.classes.js +41 -54
  326. package/dist/common/es6.classes.js.map +1 -1
  327. package/dist/common/interceptors/logging.interceptor.js +3 -1
  328. package/dist/common/interceptors/logging.interceptor.js.map +1 -1
  329. package/dist/common/interceptors/monitoring.interceptor.js +0 -1
  330. package/dist/common/interceptors/monitoring.interceptor.js.map +1 -1
  331. package/dist/common/jobs/activity.log.job.js +0 -1
  332. package/dist/common/jobs/activity.log.job.js.map +1 -1
  333. package/dist/common/jobs/common.job.d.ts +9 -5
  334. package/dist/common/jobs/common.job.d.ts.map +1 -1
  335. package/dist/common/jobs/common.job.js +21 -6
  336. package/dist/common/jobs/common.job.js.map +1 -1
  337. package/dist/common/jobs/dispatch.scheduled.event.job.d.ts +11 -0
  338. package/dist/common/jobs/dispatch.scheduled.event.job.d.ts.map +1 -0
  339. package/dist/common/jobs/dispatch.scheduled.event.job.js +65 -0
  340. package/dist/common/jobs/dispatch.scheduled.event.job.js.map +1 -0
  341. package/dist/common/jobs/document.job.js +0 -1
  342. package/dist/common/jobs/document.job.js.map +1 -1
  343. package/dist/common/jobs/scheduled.event.job.d.ts +10 -0
  344. package/dist/common/jobs/scheduled.event.job.d.ts.map +1 -0
  345. package/dist/common/jobs/scheduled.event.job.js +30 -0
  346. package/dist/common/jobs/scheduled.event.job.js.map +1 -0
  347. package/dist/common/jobs/set.scheduled.event.job.d.ts +15 -0
  348. package/dist/common/jobs/set.scheduled.event.job.d.ts.map +1 -0
  349. package/dist/common/jobs/set.scheduled.event.job.js +74 -0
  350. package/dist/common/jobs/set.scheduled.event.job.js.map +1 -0
  351. package/dist/common/jobs/system.audit.log.job.js +0 -1
  352. package/dist/common/jobs/system.audit.log.job.js.map +1 -1
  353. package/dist/common/jobs/system.constant.job.js +0 -1
  354. package/dist/common/jobs/system.constant.job.js.map +1 -1
  355. package/dist/common/jobs/system.constant.type.job.js +0 -1
  356. package/dist/common/jobs/system.constant.type.job.js.map +1 -1
  357. package/dist/common/jobs/system.failed.job.job.js +0 -1
  358. package/dist/common/jobs/system.failed.job.job.js.map +1 -1
  359. package/dist/common/jobs/system.notification.job.js +0 -1
  360. package/dist/common/jobs/system.notification.job.js.map +1 -1
  361. package/dist/common/jobs/system.property.job.js +0 -1
  362. package/dist/common/jobs/system.property.job.js.map +1 -1
  363. package/dist/common/jobs/system.scheduled.task.job.d.ts +12 -0
  364. package/dist/common/jobs/system.scheduled.task.job.d.ts.map +1 -0
  365. package/dist/common/jobs/system.scheduled.task.job.js +53 -0
  366. package/dist/common/jobs/system.scheduled.task.job.js.map +1 -0
  367. package/dist/common/{processors → libraries}/common.data.processor.d.ts +3 -4
  368. package/dist/common/libraries/common.data.processor.d.ts.map +1 -0
  369. package/dist/common/{processors → libraries}/common.data.processor.js +16 -22
  370. package/dist/common/libraries/common.data.processor.js.map +1 -0
  371. package/dist/common/libraries/common.list.processor.d.ts +27 -0
  372. package/dist/common/libraries/common.list.processor.d.ts.map +1 -0
  373. package/dist/common/libraries/common.list.processor.js +130 -0
  374. package/dist/common/libraries/common.list.processor.js.map +1 -0
  375. package/dist/common/libraries/filter.operator.registry.d.ts +4 -0
  376. package/dist/common/libraries/filter.operator.registry.d.ts.map +1 -0
  377. package/dist/common/libraries/filter.operator.registry.js +54 -0
  378. package/dist/common/libraries/filter.operator.registry.js.map +1 -0
  379. package/dist/common/queue.module.d.ts +1 -4
  380. package/dist/common/queue.module.d.ts.map +1 -1
  381. package/dist/common/queue.module.js +50 -38
  382. package/dist/common/queue.module.js.map +1 -1
  383. package/dist/common/services/cache.service.js +1 -3
  384. package/dist/common/services/cache.service.js.map +1 -1
  385. package/dist/common/services/encryption.service.js +3 -1
  386. package/dist/common/services/encryption.service.js.map +1 -1
  387. package/dist/common/services/feature.flag.service.js +1 -2
  388. package/dist/common/services/feature.flag.service.js.map +1 -1
  389. package/dist/common/services/monitoring.service.js +4 -2
  390. package/dist/common/services/monitoring.service.js.map +1 -1
  391. package/dist/common/services/queue.service.d.ts +16 -6
  392. package/dist/common/services/queue.service.d.ts.map +1 -1
  393. package/dist/common/services/queue.service.js +61 -80
  394. package/dist/common/services/queue.service.js.map +1 -1
  395. package/dist/common/services/remote.request.service.d.ts +7 -0
  396. package/dist/common/services/remote.request.service.d.ts.map +1 -0
  397. package/dist/common/services/remote.request.service.js +48 -0
  398. package/dist/common/services/remote.request.service.js.map +1 -0
  399. package/dist/common/services/sql.service.d.ts +25 -0
  400. package/dist/common/services/sql.service.d.ts.map +1 -0
  401. package/dist/common/services/sql.service.js +119 -0
  402. package/dist/common/services/sql.service.js.map +1 -0
  403. package/dist/common/services/system.property.service.js +2 -5
  404. package/dist/common/services/system.property.service.js.map +1 -1
  405. package/dist/common/subscribers/activity.log.subscriber.js +0 -1
  406. package/dist/common/subscribers/activity.log.subscriber.js.map +1 -1
  407. package/dist/common/subscribers/document.subscriber.js +0 -1
  408. package/dist/common/subscribers/document.subscriber.js.map +1 -1
  409. package/dist/common/subscribers/scheduled.event.subscriber.d.ts +11 -0
  410. package/dist/common/subscribers/scheduled.event.subscriber.d.ts.map +1 -0
  411. package/dist/common/subscribers/scheduled.event.subscriber.js +35 -0
  412. package/dist/common/subscribers/scheduled.event.subscriber.js.map +1 -0
  413. package/dist/common/subscribers/system.audit.log.subscriber.js +0 -1
  414. package/dist/common/subscribers/system.audit.log.subscriber.js.map +1 -1
  415. package/dist/common/subscribers/system.constant.subscriber.js +0 -1
  416. package/dist/common/subscribers/system.constant.subscriber.js.map +1 -1
  417. package/dist/common/subscribers/system.constant.type.subscriber.js +0 -1
  418. package/dist/common/subscribers/system.constant.type.subscriber.js.map +1 -1
  419. package/dist/common/subscribers/system.failed.job.subscriber.js +0 -1
  420. package/dist/common/subscribers/system.failed.job.subscriber.js.map +1 -1
  421. package/dist/common/subscribers/system.notification.subscriber.js +0 -1
  422. package/dist/common/subscribers/system.notification.subscriber.js.map +1 -1
  423. package/dist/common/subscribers/system.property.subscriber.js +0 -1
  424. package/dist/common/subscribers/system.property.subscriber.js.map +1 -1
  425. package/dist/common/subscribers/system.scheduled.task.subscriber.d.ts +11 -0
  426. package/dist/common/subscribers/system.scheduled.task.subscriber.d.ts.map +1 -0
  427. package/dist/common/subscribers/system.scheduled.task.subscriber.js +34 -0
  428. package/dist/common/subscribers/system.scheduled.task.subscriber.js.map +1 -0
  429. package/dist/common/system.property.module.js +13 -15
  430. package/dist/common/system.property.module.js.map +1 -1
  431. package/dist/common/types/database.event.type.d.ts +2 -0
  432. package/dist/common/types/database.event.type.d.ts.map +1 -0
  433. package/dist/common/types/database.event.type.js +3 -0
  434. package/dist/common/types/database.event.type.js.map +1 -0
  435. package/dist/common/types/list.types.d.ts +20 -0
  436. package/dist/common/types/list.types.d.ts.map +1 -0
  437. package/dist/common/types/list.types.js +3 -0
  438. package/dist/common/types/list.types.js.map +1 -0
  439. package/dist/common/types/paginated.result.types.d.ts +4 -0
  440. package/dist/common/types/paginated.result.types.d.ts.map +1 -1
  441. package/dist/common/types/paginated.result.types.js.map +1 -1
  442. package/dist/common/types/queue.types.d.ts +9 -0
  443. package/dist/common/types/queue.types.d.ts.map +1 -1
  444. package/dist/common/types/remote.request.options.d.ts +10 -0
  445. package/dist/common/types/remote.request.options.d.ts.map +1 -0
  446. package/dist/common/types/remote.request.options.js +3 -0
  447. package/dist/common/types/remote.request.options.js.map +1 -0
  448. package/dist/common/types/sql.types.d.ts +11 -0
  449. package/dist/common/types/sql.types.d.ts.map +1 -0
  450. package/dist/common/types/sql.types.js +3 -0
  451. package/dist/common/types/sql.types.js.map +1 -0
  452. package/dist/constants/job.constants.d.ts +19 -13
  453. package/dist/constants/job.constants.d.ts.map +1 -1
  454. package/dist/constants/job.constants.js +6 -0
  455. package/dist/constants/job.constants.js.map +1 -1
  456. package/dist/database/config/data.source.config.d.ts.map +1 -1
  457. package/dist/database/config/data.source.config.js +30 -2
  458. package/dist/database/config/data.source.config.js.map +1 -1
  459. package/dist/document/document.module.d.ts.map +1 -1
  460. package/dist/document/document.module.js +2 -5
  461. package/dist/document/document.module.js.map +1 -1
  462. package/dist/document/es6.classes.d.ts +7 -3
  463. package/dist/document/es6.classes.d.ts.map +1 -1
  464. package/dist/document/es6.classes.js +8 -7
  465. package/dist/document/es6.classes.js.map +1 -1
  466. package/dist/document/services/document.service.js +1 -4
  467. package/dist/document/services/document.service.js.map +1 -1
  468. package/dist/document/services/minio.bucket.document.service.js +6 -4
  469. package/dist/document/services/minio.bucket.document.service.js.map +1 -1
  470. package/dist/document/services/s3.bucket.document.service.js +5 -3
  471. package/dist/document/services/s3.bucket.document.service.js.map +1 -1
  472. package/dist/global/filters/global.exception.filter.js +3 -1
  473. package/dist/global/filters/global.exception.filter.js.map +1 -1
  474. package/dist/global/utilities/migration.utility.js +3 -4
  475. package/dist/global/utilities/migration.utility.js.map +1 -1
  476. package/dist/global/utilities/schedule.utility.d.ts +8 -0
  477. package/dist/global/utilities/schedule.utility.d.ts.map +1 -0
  478. package/dist/global/utilities/schedule.utility.js +23 -0
  479. package/dist/global/utilities/schedule.utility.js.map +1 -0
  480. package/dist/global/utilities/seeder.utility.js +1 -2
  481. package/dist/global/utilities/seeder.utility.js.map +1 -1
  482. package/dist/index.d.ts +92 -8
  483. package/dist/index.d.ts.map +1 -1
  484. package/dist/index.js +169 -8
  485. package/dist/index.js.map +1 -1
  486. package/dist/main.js +12 -0
  487. package/dist/main.js.map +1 -1
  488. package/dist/migrations/1749600000001.CreateSysUsersTable.d.ts.map +1 -1
  489. package/dist/migrations/1749600000001.CreateSysUsersTable.js +15 -2
  490. package/dist/migrations/1749600000001.CreateSysUsersTable.js.map +1 -1
  491. package/dist/migrations/1749600000014.CreateSysTenantsTable.d.ts.map +1 -1
  492. package/dist/migrations/1749600000014.CreateSysTenantsTable.js +11 -0
  493. package/dist/migrations/1749600000014.CreateSysTenantsTable.js.map +1 -1
  494. package/dist/migrations/1749600000017.CreateSysScheduledTasksTable.d.ts +6 -0
  495. package/dist/migrations/1749600000017.CreateSysScheduledTasksTable.d.ts.map +1 -0
  496. package/dist/migrations/1749600000017.CreateSysScheduledTasksTable.js +23 -0
  497. package/dist/migrations/1749600000017.CreateSysScheduledTasksTable.js.map +1 -0
  498. package/dist/migrations/1749600000018.CreateSysScheduledEventsTable.d.ts +6 -0
  499. package/dist/migrations/1749600000018.CreateSysScheduledEventsTable.d.ts.map +1 -0
  500. package/dist/migrations/1749600000018.CreateSysScheduledEventsTable.js +30 -0
  501. package/dist/migrations/1749600000018.CreateSysScheduledEventsTable.js.map +1 -0
  502. package/dist/migrations/1749600000019.CreateSysEmailTemplatesTable.d.ts +6 -0
  503. package/dist/migrations/1749600000019.CreateSysEmailTemplatesTable.d.ts.map +1 -0
  504. package/dist/migrations/1749600000019.CreateSysEmailTemplatesTable.js +22 -0
  505. package/dist/migrations/1749600000019.CreateSysEmailTemplatesTable.js.map +1 -0
  506. package/dist/migrations/1749600000020.CreateSysEmailNotificationLogsTable.d.ts +6 -0
  507. package/dist/migrations/1749600000020.CreateSysEmailNotificationLogsTable.d.ts.map +1 -0
  508. package/dist/migrations/1749600000020.CreateSysEmailNotificationLogsTable.js +22 -0
  509. package/dist/migrations/1749600000020.CreateSysEmailNotificationLogsTable.js.map +1 -0
  510. package/dist/notification/dtos/email.notification.log.attributes.dto.d.ts +5 -0
  511. package/dist/notification/dtos/email.notification.log.attributes.dto.d.ts.map +1 -0
  512. package/dist/notification/dtos/email.notification.log.attributes.dto.js +7 -0
  513. package/dist/notification/dtos/email.notification.log.attributes.dto.js.map +1 -0
  514. package/dist/notification/dtos/email.notification.options.dto.d.ts +11 -0
  515. package/dist/notification/dtos/email.notification.options.dto.d.ts.map +1 -0
  516. package/dist/notification/dtos/email.notification.options.dto.js +10 -0
  517. package/dist/notification/dtos/email.notification.options.dto.js.map +1 -0
  518. package/dist/notification/dtos/email.template.attributes.dto.d.ts +3 -0
  519. package/dist/notification/dtos/email.template.attributes.dto.d.ts.map +1 -0
  520. package/dist/notification/dtos/email.template.attributes.dto.js +7 -0
  521. package/dist/notification/dtos/email.template.attributes.dto.js.map +1 -0
  522. package/dist/notification/entities/email.notification.log.entity.d.ts +9 -0
  523. package/dist/notification/entities/email.notification.log.entity.d.ts.map +1 -0
  524. package/dist/notification/entities/email.notification.log.entity.js +38 -0
  525. package/dist/notification/entities/email.notification.log.entity.js.map +1 -0
  526. package/dist/notification/entities/email.template.entity.d.ts +10 -0
  527. package/dist/notification/entities/email.template.entity.d.ts.map +1 -0
  528. package/dist/notification/entities/email.template.entity.js +42 -0
  529. package/dist/notification/entities/email.template.entity.js.map +1 -0
  530. package/dist/notification/entities/user.device.token.entity.js +0 -5
  531. package/dist/notification/entities/user.device.token.entity.js.map +1 -1
  532. package/dist/notification/enums/email.notification.default.enum.d.ts +5 -0
  533. package/dist/notification/enums/email.notification.default.enum.d.ts.map +1 -0
  534. package/dist/notification/enums/email.notification.default.enum.js +9 -0
  535. package/dist/notification/enums/email.notification.default.enum.js.map +1 -0
  536. package/dist/notification/es6.classes.d.ts +14 -5
  537. package/dist/notification/es6.classes.d.ts.map +1 -1
  538. package/dist/notification/es6.classes.js +17 -5
  539. package/dist/notification/es6.classes.js.map +1 -1
  540. package/dist/notification/jobs/email.notification.log.job.d.ts +8 -0
  541. package/dist/notification/jobs/email.notification.log.job.d.ts.map +1 -0
  542. package/dist/notification/jobs/email.notification.log.job.js +31 -0
  543. package/dist/notification/jobs/email.notification.log.job.js.map +1 -0
  544. package/dist/notification/jobs/email.template.job.d.ts +8 -0
  545. package/dist/notification/jobs/email.template.job.d.ts.map +1 -0
  546. package/dist/notification/jobs/email.template.job.js +31 -0
  547. package/dist/notification/jobs/email.template.job.js.map +1 -0
  548. package/dist/notification/libraries/process.email.notification.d.ts +11 -0
  549. package/dist/notification/libraries/process.email.notification.d.ts.map +1 -0
  550. package/dist/notification/libraries/process.email.notification.js +33 -0
  551. package/dist/notification/libraries/process.email.notification.js.map +1 -0
  552. package/dist/notification/notification.module.d.ts.map +1 -1
  553. package/dist/notification/notification.module.js +24 -6
  554. package/dist/notification/notification.module.js.map +1 -1
  555. package/dist/notification/services/email.notification.service.d.ts +18 -0
  556. package/dist/notification/services/email.notification.service.d.ts.map +1 -0
  557. package/dist/notification/services/email.notification.service.js +122 -0
  558. package/dist/notification/services/email.notification.service.js.map +1 -0
  559. package/dist/notification/services/fcm.push.notification.service.js +4 -2
  560. package/dist/notification/services/fcm.push.notification.service.js.map +1 -1
  561. package/dist/notification/services/notification.service.js +1 -3
  562. package/dist/notification/services/notification.service.js.map +1 -1
  563. package/dist/notification/subscribers/email.notification.log.subscriber.d.ts +11 -0
  564. package/dist/notification/subscribers/email.notification.log.subscriber.d.ts.map +1 -0
  565. package/dist/notification/subscribers/email.notification.log.subscriber.js +35 -0
  566. package/dist/notification/subscribers/email.notification.log.subscriber.js.map +1 -0
  567. package/dist/notification/subscribers/email.template.subscriber.d.ts +11 -0
  568. package/dist/notification/subscribers/email.template.subscriber.d.ts.map +1 -0
  569. package/dist/notification/subscribers/email.template.subscriber.js +35 -0
  570. package/dist/notification/subscribers/email.template.subscriber.js.map +1 -0
  571. package/dist/notification/types/email.notification.types.d.ts +10 -0
  572. package/dist/notification/types/email.notification.types.d.ts.map +1 -0
  573. package/dist/notification/types/email.notification.types.js +3 -0
  574. package/dist/notification/types/email.notification.types.js.map +1 -0
  575. package/dist/tenant/entities/common.tenant.entity.d.ts +7 -0
  576. package/dist/tenant/entities/common.tenant.entity.d.ts.map +1 -0
  577. package/dist/tenant/entities/{tenant.common.entity.js → common.tenant.entity.js} +9 -10
  578. package/dist/tenant/entities/common.tenant.entity.js.map +1 -0
  579. package/dist/tenant/entities/tenant.entity.d.ts +14 -2
  580. package/dist/tenant/entities/tenant.entity.d.ts.map +1 -1
  581. package/dist/tenant/entities/tenant.entity.js +50 -7
  582. package/dist/tenant/entities/tenant.entity.js.map +1 -1
  583. package/dist/tenant/es6.classes.d.ts +7 -8
  584. package/dist/tenant/es6.classes.d.ts.map +1 -1
  585. package/dist/tenant/es6.classes.js +8 -8
  586. package/dist/tenant/es6.classes.js.map +1 -1
  587. package/dist/tenant/middlewares/tenant.context.middleware.js +2 -5
  588. package/dist/tenant/middlewares/tenant.context.middleware.js.map +1 -1
  589. package/dist/tenant/services/tenant.context.service.js +3 -1
  590. package/dist/tenant/services/tenant.context.service.js.map +1 -1
  591. package/dist/tenant/services/tenant.service.js +0 -1
  592. package/dist/tenant/services/tenant.service.js.map +1 -1
  593. package/dist/tenant/tenant.module.js +5 -8
  594. package/dist/tenant/tenant.module.js.map +1 -1
  595. package/package.json +2 -1
  596. package/dist/common/dtos/paginated.query.dto.d.ts +0 -6
  597. package/dist/common/dtos/paginated.query.dto.d.ts.map +0 -1
  598. package/dist/common/dtos/paginated.query.dto.js.map +0 -1
  599. package/dist/common/processors/common.data.processor.d.ts.map +0 -1
  600. package/dist/common/processors/common.data.processor.js.map +0 -1
  601. package/dist/tenant/entities/tenant.common.entity.d.ts +0 -6
  602. package/dist/tenant/entities/tenant.common.entity.d.ts.map +0 -1
  603. package/dist/tenant/entities/tenant.common.entity.js.map +0 -1
package/README.md CHANGED
@@ -81,24 +81,263 @@ app.useGlobalInterceptors(
81
81
 
82
82
  ## Feature Map
83
83
 
84
- | Area | Key exports | Notes |
85
- | ----------------- | ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
86
- | Entities | `RootEntity`, `CommonEntity`, `UserEntity`, `SystemRoleEntity`, ... | uuid PK, soft deletes, `created_by`, jsonb `attributes`; entity-level `findOneOrNew`, `softDelete`, `hardDelete`, `restore`, `paginate` statics |
87
- | Migrations | `CreateSysUsersTable...` (16 files), `MigrationUtility`, `SeederUtility` | fluent `this.string()`, `this.numeric()`, `addRecord()` seeding |
88
- | Queue | `QueueModule`, `QueueService`, `CommonJob` | BullMQ; duplicate prevention, failed jobs persisted to `sys_failed_jobs` |
89
- | Auth | `AuthModule`, `AuthService`, `JwtAuthGuard`, `JwtRefreshGuard`, `@Public()`, `@CurrentUser()` | access + rotating refresh tokens, Redis JTI blocklist |
90
- | API keys | `ApiKeyService`, `ApiKeyGuard`, `@ApiKeyScopes()` | hashed keys in `sys_api_keys`, scopes, expiry/revocation, `x-api-key` header |
91
- | Multi-tenancy | `TenantModule`, `TenantEntity`, `TenantCommonEntity`, `TenantContextService`, `TenantContextMiddleware` | AsyncLocalStorage tenant context; resolve by header, slug, or domain |
92
- | Notifications | `NotificationModule`, `NotificationService`, `FcmPushNotificationService` | in-app rows + FCM push (optional `firebase-admin`); device token registry |
93
- | Audit | `AuditService` | `saveAuditLog(old, new)` with changed-value diffing into `sys_audit_logs` |
94
- | Feature flags | `FeatureFlagService` | on/off, percentage rollouts, allow lists — stored as `feature.*` system properties |
95
- | Cache | `CacheService` | Redis, TTL objects (`{days, hours, min}`), transparent encryption |
96
- | Encryption | `EncryptionService` | AES-256-GCM, scrypt-derived keys |
97
- | System properties | `SystemPropertyModule`, `SystemPropertyService` | cached + optionally encrypted key/value settings in `sys_properties` |
98
- | Documents | `DocumentModule`, `DocumentService`, `S3BucketDocumentService`, `MinioBucketDocumentService` | `uploadDocument(multerFiles) → links[]`; driver chosen via `DOCUMENT_STORAGE_DRIVER` |
99
- | HTTP | `CommonController`, `GlobalExceptionFilter`, common DTOs | health endpoint base controller, uniform error envelope |
100
- | Observability | `LoggingInterceptor`, `MonitoringInterceptor`, `MonitoringService` | Sentry auto-registers when `@sentry/node` + `SENTRY_DSN` present; pluggable `MonitoringAdapter` |
101
- | Jobs/Events | `CommonJob`, `CommonSubscriber`, `CommonDataProcessor` | dispatch/handle separation, column-change detection, field error collection |
84
+ | Area | Key exports | Notes |
85
+ | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
86
+ | Entities | `RootEntity`, `CommonEntity`, `UserEntity`, `SystemRoleEntity`, ... | uuid PK, soft deletes, `created_by`, jsonb `attributes`; entity-level `findOneOrNew`, `softDelete`, `hardDelete`, `restore`, `paginate` statics |
87
+ | Migrations | `CreateSysUsersTable...` (16 files), `MigrationUtility`, `SeederUtility` | fluent `this.string()`, `this.numeric()`, `addRecord()` seeding |
88
+ | Queue | `QueueModule`, `QueueService`, `CommonJob`, `JobConsumer` | BullMQ `@Processor`/`WorkerHost` consumer; auto-discovered jobs, duplicate prevention, recurring schedulers, 1-day TTL, retries, failures persisted to `sys_failed_jobs` |
89
+ | Scheduled events | `SystemScheduledTaskEntity`, `ScheduledEventEntity`, `SetScheduledEventJob`, `DispatchScheduledEventJob` | schedule definitions in `sys_scheduled_tasks` → events in `sys_scheduled_events`; worker-driven materialisation + dispatch via `SCHEDULED_EVENT_*` env |
90
+ | Auth | `AuthModule`, `AuthService.validateAccess()`, `AuthContextService`, `AuthContextMiddleware` | imperative auth (open by default); bearer token via AsyncLocalStorage → user + roles; access + rotating refresh tokens, Redis JTI blocklist |
91
+ | API keys | `ApiKeyService`, `ApiKeyGuard`, `@ApiKeyScopes()` | hashed keys in `sys_api_keys`, scopes, expiry/revocation, `x-api-key` header |
92
+ | Multi-tenancy | `TenantModule`, `TenantEntity`, `TenantCommonEntity`, `TenantContextService`, `TenantContextMiddleware` | AsyncLocalStorage tenant context; resolve by header, slug, or domain |
93
+ | Admin | `AdminModule`, `AdminAccessService`, `TenantDataProcessor`, `ClientUserDataProcessor`, `BulkUserDataProcessor`, `AdminUserDataProcessor`, list processors | back-office APIs: tenant onboarding, client/admin user registration (single + bulk), tenant + scheduled-task listing; 4-tier `GlobalAdminRoles` gate; `UserType` discriminator on `sys_users`; Swagger at `/docs` (hidden in production) |
94
+ | Notifications | `NotificationModule`, `NotificationService`, `FcmPushNotificationService` | in-app rows + FCM push (optional `firebase-admin`); device token registry |
95
+ | Audit | `AuditService` | `saveAuditLog(old, new)` with changed-value diffing into `sys_audit_logs` |
96
+ | Feature flags | `FeatureFlagService` | on/off, percentage rollouts, allow lists — stored as `feature.*` system properties |
97
+ | Cache | `CacheService` | Redis, TTL objects (`{days, hours, min}`), transparent encryption |
98
+ | Encryption | `EncryptionService` | AES-256-GCM, scrypt-derived keys |
99
+ | System properties | `SystemPropertyModule`, `SystemPropertyService` | cached + optionally encrypted key/value settings in `sys_properties` |
100
+ | Documents | `DocumentModule`, `DocumentService`, `S3BucketDocumentService`, `MinioBucketDocumentService` | `uploadDocument(multerFiles) → links[]`; driver chosen via `DOCUMENT_STORAGE_DRIVER` |
101
+ | HTTP | `CommonController`, `GlobalExceptionFilter`, common DTOs | health endpoint base controller, uniform error envelope |
102
+ | Observability | `LoggingInterceptor`, `MonitoringInterceptor`, `MonitoringService` | Sentry auto-registers when `@sentry/node` + `SENTRY_DSN` present; pluggable `MonitoringAdapter` |
103
+ | Jobs/Events | `CommonJob`, `JobConsumer`, `CommonSubscriber`, `CommonDataProcessor` | dispatch/handle separation, discovery-based registration, worker-event lifecycle, column-change detection, field error collection |
104
+
105
+ ## Environment Variables
106
+
107
+ Copy [`.env.example`](./.env.example) into your project. Every variable is optional
108
+ unless marked **required**.
109
+
110
+ ### Application
111
+
112
+ | Variable | Default | Description |
113
+ | ------------ | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
114
+ | `SERVER_ENV` | `development` | Runtime environment (`development` / `staging` / `production` / `test`). Swagger docs at `/docs` are mounted in every value **except** `production`. |
115
+ | `PORT` | `8000` | HTTP port the server listens on |
116
+
117
+ ### Database (PostgreSQL)
118
+
119
+ | Variable | Default | Description |
120
+ | ------------- | ----------- | ----------------- |
121
+ | `DB_HOST` | `localhost` | Postgres host |
122
+ | `DB_PORT` | `5432` | Postgres port |
123
+ | `DB_USERNAME` | `postgres` | Postgres user |
124
+ | `DB_PASSWORD` | `postgres` | Postgres password |
125
+ | `DB_NAME` | `myapp_db` | Database name |
126
+
127
+ ### JWT / Auth
128
+
129
+ | Variable | Default | Description |
130
+ | ---------------------- | ------- | ------------------------------------------------------------- |
131
+ | `ACCESS_TOKEN_SECRET` | — | **Required.** Secret for signing access tokens. Min 32 chars |
132
+ | `REFRESH_TOKEN_SECRET` | — | **Required.** Secret for signing refresh tokens. Min 32 chars |
133
+ | `ACCESS_TOKEN_EXPIRY` | `1h` | Access token lifetime (`60s`, `15m`, `1h`, `7d`, …) |
134
+ | `REFRESH_TOKEN_EXPIRY` | `30d` | Refresh token lifetime |
135
+
136
+ #### Authentication (imperative)
137
+
138
+ Controllers are **open by default**; you authenticate explicitly inside the
139
+ handler with `AuthService.validateAccess()`. It reads the bearer token from the
140
+ request (held in `AsyncLocalStorage` by `AuthContextMiddleware`), verifies it,
141
+ rejects revoked tokens, and returns the user row with its roles — throwing
142
+ `AccessException` (403) when missing/invalid. This keeps authorization next to
143
+ your business logic, so layering tenant/plan/role checks is just more code.
144
+
145
+ `AuthController` (mounted at `/auth`) exposes the ready-made flows: `POST
146
+ /auth/login`, `/auth/register`, `/auth/refresh`, `/auth/logout`,
147
+ `/auth/change-password`, and `GET /auth/me`. Passwords are hashed/verified via
148
+ `AuthUtility` (bcrypt); the write flows use the processor lifecycle.
149
+
150
+ ```ts
151
+ @Controller('reports')
152
+ export class ReportController {
153
+ constructor(private readonly authService: AuthService) {}
154
+
155
+ @Get()
156
+ async list() {
157
+ const { user, roles } = await this.authService.validateAccess();
158
+ // ...custom checks: roles, tenant membership, subscription, ownership
159
+ }
160
+ }
161
+ ```
162
+
163
+ Wire the middleware once in your app so the token is captured per request
164
+ (mirrors `TenantContextMiddleware`):
165
+
166
+ ```ts
167
+ export class AppModule implements NestModule {
168
+ configure(consumer: MiddlewareConsumer) {
169
+ consumer.apply(AuthContextMiddleware).forRoutes('*'); // Express 5: e.g. '{*splat}'
170
+ }
171
+ }
172
+ ```
173
+
174
+ `validateAccess()` reads the token via `AuthContextService` (no request-scoped
175
+ providers). The Passport `JwtStrategy`/`JwtAuthGuard` remain available if you
176
+ prefer guard-based protection on specific routes, but they're no longer the
177
+ default path.
178
+
179
+ ### Encryption
180
+
181
+ | Variable | Default | Description |
182
+ | ------------------- | ------- | ------------------------------------------------------------------------------------- |
183
+ | `ENCRYPTION_SECRET` | — | **Required** when `EncryptionService` is used. AES-256-GCM key material. Min 32 chars |
184
+
185
+ ### Cache (Redis)
186
+
187
+ | Variable | Default | Description |
188
+ | ---------------------- | ----------- | ----------------------------------------- |
189
+ | `CACHE_REDIS_HOST` | `localhost` | Redis host for `CacheService` |
190
+ | `CACHE_REDIS_PORT` | `6379` | Redis port |
191
+ | `CACHE_REDIS_PASSWORD` | _(empty)_ | Redis password |
192
+ | `CACHE_REDIS_DB` | `1` | Redis DB index (keep separate from queue) |
193
+
194
+ ### Queue (BullMQ / Redis)
195
+
196
+ | Variable | Default | Description |
197
+ | ---------------------- | ------------- | --------------------------------------------------------------------------------------------------- |
198
+ | `BULL_REDIS_HOST` | `localhost` | Redis host for BullMQ |
199
+ | `BULL_REDIS_PORT` | `6379` | Redis port |
200
+ | `BULL_REDIS_PASSWORD` | _(empty)_ | Redis password |
201
+ | `BULL_REDIS_DB` | `0` | Redis DB index |
202
+ | `BULL_QUEUE_NAME` | `myapp-queue` | Name of the BullMQ queue |
203
+ | `BULL_WORKERS` | `2` | Concurrent worker threads per process |
204
+ | `BULL_QUEUE_WORKER` | `false` | Set `true` on consumer instances only — API servers should leave this `false` |
205
+ | `BULL_JOB_TTL_SECONDS` | `86400` | Retention (seconds) for completed/failed jobs before removal from the queue + Redis (default 1 day) |
206
+ | `MAX_JOB_RETRIES` | `3` | Max attempts per job (BullMQ `attempts` default) and the scheduled-event retry ceiling |
207
+ | `SCHEDULED_EVENT_HOUR` | `1` | Hour component of the `SetScheduledEventJob` cadence |
208
+ | `SCHEDULED_EVENT_MIN` | `0` | Minute component of the cadence |
209
+ | `SCHEDULED_EVENT_SEC` | `0` | Second component of the cadence (all three are summed; all-zero disables it) |
210
+
211
+ #### Jobs
212
+
213
+ A job pairs a **dispatch** side (enqueue work) with a **handle** side (process it).
214
+ Extend `CommonJob`, add it to your module's providers, and inject `QueueService`:
215
+
216
+ ```ts
217
+ @Injectable()
218
+ export class WelcomeEmailJob extends CommonJob {
219
+ constructor(protected readonly queueService: QueueService) {
220
+ super('welcome.email.job'); // unique identifier
221
+ }
222
+ async handle(data: { userId: string }): Promise<void> {
223
+ // ...send the email
224
+ }
225
+ }
226
+
227
+ // elsewhere: await welcomeEmailJob.dispatch({ userId });
228
+ ```
229
+
230
+ `CommonJob` has **no `onModuleInit`**. At boot `QueueService` uses Nest's
231
+ `DiscoveryService` to find every `CommonJob` provider and register its handler
232
+ by identifier — so simply providing the job is enough; nothing self-registers.
233
+
234
+ For database-event jobs (dispatched by a `CommonSubscriber`), `CommonJob`
235
+ exposes `isNewRecord(event)`, `isColumnUpdated(event, col)` and
236
+ `isAnyColumnUpdated(event, cols)` — usable directly inside `handle()` (they work
237
+ on the plain event object after the queue round-trip).
238
+
239
+ **Consumer / worker.** A single `JobConsumer` (a BullMQ `@Processor` /
240
+ `WorkerHost`) is the only worker. On instances where `BULL_QUEUE_WORKER=true` it
241
+ processes every job — routing each to the handler registered under
242
+ `job.data.job` — tracks queue stats via worker lifecycle events
243
+ (`active`/`completed`/`failed`), and persists _final_ failures (after
244
+ `MAX_JOB_RETRIES` attempts) to `sys_failed_jobs`. API instances leave
245
+ `BULL_QUEUE_WORKER=false` so no worker spawns; they can still `dispatch()`.
246
+
247
+ #### Scheduled events
248
+
249
+ Recurring work is event-driven (off the BullMQ worker), not a reconciliation
250
+ loop. Two tables back it:
251
+
252
+ | Table | Entity | Role |
253
+ | ---------------------- | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
254
+ | `sys_scheduled_tasks` | `SystemScheduledTaskEntity` | a schedule definition (`identifier`, `name`, `start_from`, `schedule_interval`, `enabled`, `next_upsert_at`) |
255
+ | `sys_scheduled_events` | `ScheduledEventEntity` | one row per fire time (`job_id` → task, `scheduled_at`, `started_at`, `failed_at`, `total_attempts`, `active`); one task → many events |
256
+
257
+ When the worker emits `ready`, `JobConsumer` enrols `SetScheduledEventJob` as a
258
+ recurring scheduler whose cadence comes from `SCHEDULED_EVENT_{HOUR,MIN,SEC}`
259
+ (summed to an interval; all-zero disables it). BullMQ keys the scheduler on the
260
+ job identifier, so re-running on each boot **upserts** rather than duplicates.
261
+
262
+ Each tick, `SetScheduledEventJob.handle()` materialises due
263
+ `sys_scheduled_events` rows from enabled `sys_scheduled_tasks` (using
264
+ `ScheduleUtility.addInterval`) and triggers `DispatchScheduledEventJob`, which
265
+ enqueues each due event's job (bounded by `MAX_JOB_RETRIES`).
266
+ `SystemScheduledTaskJob` (via `SystemScheduledTaskSubscriber`) keeps events in
267
+ step with task changes — toggling `active` when a task is enabled/disabled and
268
+ soft-deleting events when a task is removed.
269
+
270
+ When a `ScheduledEventEntity` row is written, `ScheduledEventSubscriber` fires
271
+ `ScheduledEventJob` with the database event — wire your per-event dispatch logic
272
+ into that job's `handle()`.
273
+
274
+ ### Document Storage
275
+
276
+ | Variable | Default | Description |
277
+ | --------------------------------------- | ------- | ------------------------------------------ |
278
+ | `DOCUMENT_STORAGE_DRIVER` | `minio` | Active driver: `s3` or `minio` |
279
+ | `DOCUMENT_PRESIGNED_URL_EXPIRY_SECONDS` | `3600` | Presigned download URL validity in seconds |
280
+
281
+ **S3 driver** (`DOCUMENT_STORAGE_DRIVER=s3`):
282
+
283
+ | Variable | Default | Description |
284
+ | ------------------------- | ----------- | --------------------------------------------------------------- |
285
+ | `AWS_S3_BUCKET` | — | **Required.** S3 bucket name |
286
+ | `AWS_S3_REGION` | `us-east-1` | AWS region |
287
+ | `AWS_ACCESS_KEY_ID` | — | AWS access key (falls back to instance profile / env chain) |
288
+ | `AWS_SECRET_ACCESS_KEY` | — | AWS secret key |
289
+ | `AWS_S3_ENDPOINT` | _(empty)_ | Custom endpoint for S3-compatible providers |
290
+ | `AWS_S3_PUBLIC_URL` | _(empty)_ | CDN base URL for public files |
291
+ | `AWS_S3_FORCE_PATH_STYLE` | `false` | Force path-style URLs (required by some S3-compatible services) |
292
+
293
+ **MinIO driver** (`DOCUMENT_STORAGE_DRIVER=minio`):
294
+
295
+ | Variable | Default | Description |
296
+ | ------------------ | ------------ | ------------------------------------------- |
297
+ | `MINIO_ENDPOINT` | `localhost` | MinIO host |
298
+ | `MINIO_PORT` | `9000` | MinIO port |
299
+ | `MINIO_USE_SSL` | `false` | Enable TLS |
300
+ | `MINIO_ACCESS_KEY` | `minioadmin` | MinIO access key |
301
+ | `MINIO_SECRET_KEY` | `minioadmin` | MinIO secret key |
302
+ | `MINIO_BUCKET` | `documents` | Bucket name (auto-created if missing) |
303
+ | `MINIO_PUBLIC_URL` | _(empty)_ | CDN base URL when MinIO sits behind a proxy |
304
+
305
+ ### HTTP Logging
306
+
307
+ | Variable | Default | Description |
308
+ | ----------------- | ------- | --------------------------------------------------------------------------- |
309
+ | `HTTP_LOG_FORMAT` | `dev` | Morgan log format: `dev` (compact) or `combined` (includes IP + user agent) |
310
+
311
+ ### Monitoring
312
+
313
+ | Variable | Default | Description |
314
+ | ---------------------------- | --------- | -------------------------------------------------------------------------------------- |
315
+ | `SENTRY_DSN` | _(empty)_ | Sentry DSN — Sentry is only activated when this is set and `@sentry/node` is installed |
316
+ | `SENTRY_TRACES_SAMPLE_RATE` | `0` | Sentry performance traces sample rate (0–1) |
317
+ | `MONITORING_SLOW_REQUEST_MS` | `3000` | Requests slower than this (ms) are flagged as warnings |
318
+
319
+ ### Multi-tenancy
320
+
321
+ | Variable | Default | Description |
322
+ | -------------------- | ------------- | ----------------------------------------------- |
323
+ | `TENANT_HEADER_NAME` | `x-tenant-id` | Request header carrying the tenant UUID or slug |
324
+
325
+ ### API Keys
326
+
327
+ | Variable | Default | Description |
328
+ | --------------------- | ----------- | ----------------------------------- |
329
+ | `API_KEY_HEADER_NAME` | `x-api-key` | Request header carrying the API key |
330
+
331
+ ### Push Notifications (FCM)
332
+
333
+ Requires the optional peer dependency `firebase-admin`. Provide **one** of:
334
+
335
+ | Variable | Default | Description |
336
+ | ---------------------------- | --------- | ----------------------------------------------------------------------------- |
337
+ | `FCM_SERVICE_ACCOUNT_PATH` | _(empty)_ | Absolute path to the Firebase service account JSON file |
338
+ | `FCM_SERVICE_ACCOUNT_BASE64` | _(empty)_ | Base64-encoded service account JSON (preferred for containerised deployments) |
339
+
340
+ ---
102
341
 
103
342
  ## Document Uploads in 10 Lines
104
343
 
@@ -120,6 +359,65 @@ async upload(@UploadedFiles() files: Express.Multer.File[], @CurrentUser() user:
120
359
  Set `DOCUMENT_STORAGE_DRIVER=minio` for a local MinIO bucket (auto-created) or
121
360
  `DOCUMENT_STORAGE_DRIVER=s3` for Amazon S3. Switching drivers requires no code change.
122
361
 
362
+ ## Admin Module
363
+
364
+ `AdminModule` is the back-office surface — tenant onboarding, client/admin user
365
+ registration, tenant listing and scheduled-task management. It uses the same
366
+ imperative auth model as the rest of the app: controllers are open by default and
367
+ gate each action through `AdminAccessService` before handing the work to a
368
+ processor.
369
+
370
+ ### Roles
371
+
372
+ Global roles (`GlobalAdminRoles`) are ordered by seniority — a senior role
373
+ satisfies any junior requirement:
374
+
375
+ | Role (`sys_roles.name`) | Capability |
376
+ | ------------------------ | ---------------------------------------------------- |
377
+ | `global.super.admin` | View/change/delete everything, including tenant info |
378
+ | `global.admin` | Tenant listing and admin-user management |
379
+ | `global.content.manager` | View/change/edit everything except tenant info |
380
+ | `global.content.reader` | Read-only access to non-tenant content |
381
+
382
+ `AdminAccessService` exposes `validateSuperAdmin()`, `validateAdmin()`,
383
+ `validateContentManager()` and `validateContentReader()`. Each authenticates the
384
+ caller and returns `{ user, roles }` so the controller can pass the actor to a
385
+ processor.
386
+
387
+ ### Endpoints
388
+
389
+ | Route | Min. role | Processor |
390
+ | -------------------------------- | --------------- | ---------------------------- |
391
+ | `POST /admin/tenants` | super admin | `TenantDataProcessor` |
392
+ | `GET /admin/tenants` | admin | `TenantListProcessor` |
393
+ | `POST /admin/users/clients` | super admin | `ClientUserDataProcessor` |
394
+ | `POST /admin/users/clients/bulk` | super admin | `BulkUserDataProcessor` |
395
+ | `POST /admin/users/admins` | admin | `AdminUserDataProcessor` |
396
+ | `POST /admin/scheduled-tasks` | content manager | `ScheduledTaskDataProcessor` |
397
+ | `GET /admin/scheduled-tasks` | content reader | `ScheduledTaskListProcessor` |
398
+
399
+ ### Flow
400
+
401
+ ```ts
402
+ @Post()
403
+ async onboard(@Body() dto: AddTenantDto) {
404
+ const { user } = await this.adminAccessService.validateSuperAdmin();
405
+ return new TenantDataProcessor(user).process(dto);
406
+ }
407
+ ```
408
+
409
+ Data processors extend `CommonDataProcessor` and are created per request
410
+ (`new XxxDataProcessor(actor, ...deps).process(dto)`); list processors return a
411
+ `PaginatedResult`. Bulk registration validates the entire batch before any insert.
412
+ Admins and client users share `sys_users`, distinguished by the `UserType` enum on
413
+ `user_type` (`system.user` vs `tenant.user`).
414
+
415
+ ### API docs (Swagger)
416
+
417
+ Interactive docs are served at `GET /docs` (JSON at `/docs-json`) in every
418
+ environment **except production** — `main.ts` only mounts Swagger when
419
+ `SERVER_ENV !== 'production'`, so the schema is never exposed in prod.
420
+
123
421
  ## License
124
422
 
125
423
  MIT
@@ -0,0 +1,8 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ export interface AdminModuleOptions {
3
+ dataSourceName?: string;
4
+ }
5
+ export declare class AdminModule {
6
+ static register(options?: AdminModuleOptions): DynamicModule;
7
+ }
8
+ //# sourceMappingURL=admin.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.module.d.ts","sourceRoot":"","sources":["../../src/admin/admin.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAOvD,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD,qBAMa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAE,kBAAuB,GAAG,aAAa;CASjE"}
@@ -0,0 +1,36 @@
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 AdminModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.AdminModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const auth_module_1 = require("../auth/auth.module");
13
+ const tenant_module_1 = require("../tenant/tenant.module");
14
+ const es6_classes_1 = require("./es6.classes");
15
+ const [AdminAccessService] = es6_classes_1.es6Classes.services;
16
+ let AdminModule = AdminModule_1 = class AdminModule {
17
+ static register(options = {}) {
18
+ return {
19
+ module: AdminModule_1,
20
+ imports: [auth_module_1.AuthModule.register(options), tenant_module_1.TenantModule.register(options)],
21
+ controllers: [...es6_classes_1.es6Classes.controllers],
22
+ providers: [...es6_classes_1.es6Classes.services],
23
+ exports: [...es6_classes_1.es6Classes.services],
24
+ };
25
+ }
26
+ };
27
+ exports.AdminModule = AdminModule;
28
+ exports.AdminModule = AdminModule = AdminModule_1 = __decorate([
29
+ (0, common_1.Module)({
30
+ imports: [auth_module_1.AuthModule, tenant_module_1.TenantModule],
31
+ controllers: [...es6_classes_1.es6Classes.controllers],
32
+ providers: [...es6_classes_1.es6Classes.services],
33
+ exports: [...es6_classes_1.es6Classes.services],
34
+ })
35
+ ], AdminModule);
36
+ //# sourceMappingURL=admin.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.module.js","sourceRoot":"","sources":["../../src/admin/admin.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,qDAAiD;AACjD,2DAAuD;AACvD,+CAA2C;AAE3C,MAAM,CAAC,kBAAkB,CAAC,GAAG,wBAAU,CAAC,QAAQ,CAAC;AAqB1C,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,UAA8B,EAAE;QAC9C,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,CAAC,wBAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,4BAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvE,WAAW,EAAE,CAAC,GAAG,wBAAU,CAAC,WAAW,CAAC;YACxC,SAAS,EAAE,CAAC,GAAG,wBAAU,CAAC,QAAQ,CAAC;YACnC,OAAO,EAAE,CAAC,GAAG,wBAAU,CAAC,QAAQ,CAAC;SAClC,CAAC;IACJ,CAAC;CACF,CAAA;AAVY,kCAAW;sBAAX,WAAW;IANvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,wBAAU,EAAE,4BAAY,CAAC;QACnC,WAAW,EAAE,CAAC,GAAG,wBAAU,CAAC,WAAW,CAAC;QACxC,SAAS,EAAE,CAAC,GAAG,wBAAU,CAAC,QAAQ,CAAC;QACnC,OAAO,EAAE,CAAC,GAAG,wBAAU,CAAC,QAAQ,CAAC;KAClC,CAAC;GACW,WAAW,CAUvB"}
@@ -0,0 +1,18 @@
1
+ import { SqlService } from '../../common/services/sql.service';
2
+ import { AdminAccessService } from '../services/admin.access.service';
3
+ import { AddScheduledTaskDto } from '../dtos/add.scheduled.task.dto';
4
+ import { ScheduledTaskListDto } from '../dtos/scheduled.task.list.dto';
5
+ export declare class AdminScheduledTaskController {
6
+ private readonly adminAccessService;
7
+ private readonly sqlService;
8
+ constructor(adminAccessService: AdminAccessService, sqlService: SqlService);
9
+ add(dto: AddScheduledTaskDto): Promise<import("../..").SystemScheduledTaskEntity>;
10
+ list(dto: ScheduledTaskListDto): Promise<{
11
+ records: import("../..").SqlRow[];
12
+ total: number;
13
+ page: number;
14
+ limit: number;
15
+ total_pages: number;
16
+ }>;
17
+ }
18
+ //# sourceMappingURL=admin.scheduled.task.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.scheduled.task.controller.d.ts","sourceRoot":"","sources":["../../../src/admin/controllers/admin.scheduled.task.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAEvE,qBAGa,4BAA4B;IAErC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,UAAU;IAQnC,GAAG,CAAS,GAAG,EAAE,mBAAmB;IAUpC,IAAI,CAAS,GAAG,EAAE,oBAAoB;;;;;;;CAI7C"}
@@ -0,0 +1,68 @@
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.AdminScheduledTaskController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const sql_service_1 = require("../../common/services/sql.service");
19
+ const admin_access_service_1 = require("../services/admin.access.service");
20
+ const scheduled_task_data_processor_1 = require("../libraries/scheduled.task.data.processor");
21
+ const scheduled_task_list_processor_1 = require("../libraries/scheduled.task.list.processor");
22
+ const add_scheduled_task_dto_1 = require("../dtos/add.scheduled.task.dto");
23
+ const scheduled_task_list_dto_1 = require("../dtos/scheduled.task.list.dto");
24
+ let AdminScheduledTaskController = class AdminScheduledTaskController {
25
+ constructor(adminAccessService, sqlService) {
26
+ this.adminAccessService = adminAccessService;
27
+ this.sqlService = sqlService;
28
+ }
29
+ async add(dto) {
30
+ const { user } = await this.adminAccessService.validateContentManager();
31
+ return new scheduled_task_data_processor_1.ScheduledTaskDataProcessor(user).process(dto);
32
+ }
33
+ async list(dto) {
34
+ await this.adminAccessService.validateContentReader();
35
+ return new scheduled_task_list_processor_1.ScheduledTaskListProcessor(this.sqlService).process(dto);
36
+ }
37
+ };
38
+ exports.AdminScheduledTaskController = AdminScheduledTaskController;
39
+ __decorate([
40
+ (0, common_1.Post)(),
41
+ (0, swagger_1.ApiOperation)({
42
+ summary: 'Add a scheduled task.',
43
+ description: 'Requires at least the global content manager role.',
44
+ }),
45
+ __param(0, (0, common_1.Body)()),
46
+ __metadata("design:type", Function),
47
+ __metadata("design:paramtypes", [add_scheduled_task_dto_1.AddScheduledTaskDto]),
48
+ __metadata("design:returntype", Promise)
49
+ ], AdminScheduledTaskController.prototype, "add", null);
50
+ __decorate([
51
+ (0, common_1.Post)('list'),
52
+ (0, swagger_1.ApiOperation)({
53
+ summary: 'List, search and filter scheduled tasks.',
54
+ description: 'Requires at least the global content reader role.',
55
+ }),
56
+ __param(0, (0, common_1.Body)()),
57
+ __metadata("design:type", Function),
58
+ __metadata("design:paramtypes", [scheduled_task_list_dto_1.ScheduledTaskListDto]),
59
+ __metadata("design:returntype", Promise)
60
+ ], AdminScheduledTaskController.prototype, "list", null);
61
+ exports.AdminScheduledTaskController = AdminScheduledTaskController = __decorate([
62
+ (0, swagger_1.ApiTags)('Admin - Scheduled Tasks'),
63
+ (0, swagger_1.ApiBearerAuth)(),
64
+ (0, common_1.Controller)('admin/scheduled-tasks'),
65
+ __metadata("design:paramtypes", [admin_access_service_1.AdminAccessService,
66
+ sql_service_1.SqlService])
67
+ ], AdminScheduledTaskController);
68
+ //# sourceMappingURL=admin.scheduled.task.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.scheduled.task.controller.js","sourceRoot":"","sources":["../../../src/admin/controllers/admin.scheduled.task.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwD;AACxD,6CAAuE;AACvE,mEAA+D;AAC/D,2EAAsE;AACtE,8FAAwF;AACxF,8FAAwF;AACxF,2EAAqE;AACrE,6EAAuE;AAKhE,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IACvC,YACmB,kBAAsC,EACtC,UAAsB;QADtB,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,eAAU,GAAV,UAAU,CAAY;IACtC,CAAC;IAOE,AAAN,KAAK,CAAC,GAAG,CAAS,GAAwB;QACxC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;QACxE,OAAO,IAAI,0DAA0B,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3D,CAAC;IAOK,AAAN,KAAK,CAAC,IAAI,CAAS,GAAyB;QAC1C,MAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;QACtD,OAAO,IAAI,0DAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC;CACF,CAAA;AAzBY,oEAA4B;AAWjC;IALL,IAAA,aAAI,GAAE;IACN,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,uBAAuB;QAChC,WAAW,EAAE,oDAAoD;KAClE,CAAC;IACS,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,4CAAmB;;uDAGzC;AAOK;IALL,IAAA,aAAI,EAAC,MAAM,CAAC;IACZ,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,0CAA0C;QACnD,WAAW,EAAE,mDAAmD;KACjE,CAAC;IACU,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,8CAAoB;;wDAG3C;uCAxBU,4BAA4B;IAHxC,IAAA,iBAAO,EAAC,yBAAyB,CAAC;IAClC,IAAA,uBAAa,GAAE;IACf,IAAA,mBAAU,EAAC,uBAAuB,CAAC;qCAGK,yCAAkB;QAC1B,wBAAU;GAH9B,4BAA4B,CAyBxC"}
@@ -0,0 +1,18 @@
1
+ import { SqlService } from '../../common/services/sql.service';
2
+ import { AdminAccessService } from '../services/admin.access.service';
3
+ import { AddTenantDto } from '../dtos/add.tenant.dto';
4
+ import { TenantListDto } from '../dtos/tenant.list.dto';
5
+ export declare class AdminTenantController {
6
+ private readonly adminAccessService;
7
+ private readonly sqlService;
8
+ constructor(adminAccessService: AdminAccessService, sqlService: SqlService);
9
+ onboard(dto: AddTenantDto): Promise<import("../..").TenantEntity>;
10
+ list(dto: TenantListDto): Promise<{
11
+ records: import("../..").SqlRow[];
12
+ total: number;
13
+ page: number;
14
+ limit: number;
15
+ total_pages: number;
16
+ }>;
17
+ }
18
+ //# sourceMappingURL=admin.tenant.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.tenant.controller.d.ts","sourceRoot":"","sources":["../../../src/admin/controllers/admin.tenant.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,qBAGa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,UAAU;IAQnC,OAAO,CAAS,GAAG,EAAE,YAAY;IAUjC,IAAI,CAAS,GAAG,EAAE,aAAa;;;;;;;CAItC"}
@@ -0,0 +1,68 @@
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.AdminTenantController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const sql_service_1 = require("../../common/services/sql.service");
19
+ const admin_access_service_1 = require("../services/admin.access.service");
20
+ const tenant_data_processor_1 = require("../libraries/tenant.data.processor");
21
+ const tenant_list_processor_1 = require("../libraries/tenant.list.processor");
22
+ const add_tenant_dto_1 = require("../dtos/add.tenant.dto");
23
+ const tenant_list_dto_1 = require("../dtos/tenant.list.dto");
24
+ let AdminTenantController = class AdminTenantController {
25
+ constructor(adminAccessService, sqlService) {
26
+ this.adminAccessService = adminAccessService;
27
+ this.sqlService = sqlService;
28
+ }
29
+ async onboard(dto) {
30
+ const { user } = await this.adminAccessService.validateSuperAdmin();
31
+ return new tenant_data_processor_1.TenantDataProcessor(user).process(dto);
32
+ }
33
+ async list(dto) {
34
+ await this.adminAccessService.validateAdmin();
35
+ return new tenant_list_processor_1.TenantListProcessor(this.sqlService).process(dto);
36
+ }
37
+ };
38
+ exports.AdminTenantController = AdminTenantController;
39
+ __decorate([
40
+ (0, common_1.Post)(),
41
+ (0, swagger_1.ApiOperation)({
42
+ summary: 'Onboard (register) a new client tenant.',
43
+ description: 'Requires the global super admin role.',
44
+ }),
45
+ __param(0, (0, common_1.Body)()),
46
+ __metadata("design:type", Function),
47
+ __metadata("design:paramtypes", [add_tenant_dto_1.AddTenantDto]),
48
+ __metadata("design:returntype", Promise)
49
+ ], AdminTenantController.prototype, "onboard", null);
50
+ __decorate([
51
+ (0, common_1.Post)('list'),
52
+ (0, swagger_1.ApiOperation)({
53
+ summary: 'List, search and filter tenants.',
54
+ description: 'Requires at least the global admin role.',
55
+ }),
56
+ __param(0, (0, common_1.Body)()),
57
+ __metadata("design:type", Function),
58
+ __metadata("design:paramtypes", [tenant_list_dto_1.TenantListDto]),
59
+ __metadata("design:returntype", Promise)
60
+ ], AdminTenantController.prototype, "list", null);
61
+ exports.AdminTenantController = AdminTenantController = __decorate([
62
+ (0, swagger_1.ApiTags)('Admin - Tenants'),
63
+ (0, swagger_1.ApiBearerAuth)(),
64
+ (0, common_1.Controller)('admin/tenants'),
65
+ __metadata("design:paramtypes", [admin_access_service_1.AdminAccessService,
66
+ sql_service_1.SqlService])
67
+ ], AdminTenantController);
68
+ //# sourceMappingURL=admin.tenant.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.tenant.controller.js","sourceRoot":"","sources":["../../../src/admin/controllers/admin.tenant.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwD;AACxD,6CAAuE;AACvE,mEAA+D;AAC/D,2EAAsE;AACtE,8EAAyE;AACzE,8EAAyE;AACzE,2DAAsD;AACtD,6DAAwD;AAKjD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC,YACmB,kBAAsC,EACtC,UAAsB;QADtB,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,eAAU,GAAV,UAAU,CAAY;IACtC,CAAC;IAOE,AAAN,KAAK,CAAC,OAAO,CAAS,GAAiB;QACrC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,CAAC;QACpE,OAAO,IAAI,2CAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IAOK,AAAN,KAAK,CAAC,IAAI,CAAS,GAAkB;QACnC,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;QAC9C,OAAO,IAAI,2CAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/D,CAAC;CACF,CAAA;AAzBY,sDAAqB;AAW1B;IALL,IAAA,aAAI,GAAE;IACN,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,yCAAyC;QAClD,WAAW,EAAE,uCAAuC;KACrD,CAAC;IACa,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,6BAAY;;oDAGtC;AAOK;IALL,IAAA,aAAI,EAAC,MAAM,CAAC;IACZ,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,kCAAkC;QAC3C,WAAW,EAAE,0CAA0C;KACxD,CAAC;IACU,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,+BAAa;;iDAGpC;gCAxBU,qBAAqB;IAHjC,IAAA,iBAAO,EAAC,iBAAiB,CAAC;IAC1B,IAAA,uBAAa,GAAE;IACf,IAAA,mBAAU,EAAC,eAAe,CAAC;qCAGa,yCAAkB;QAC1B,wBAAU;GAH9B,qBAAqB,CAyBjC"}
@@ -0,0 +1,14 @@
1
+ import { TenantService } from '../../tenant/services/tenant.service';
2
+ import { AdminAccessService } from '../services/admin.access.service';
3
+ import { AddClientUserDto } from '../dtos/add.client.user.dto';
4
+ import { AddBulkUsersDto } from '../dtos/add.bulk.users.dto';
5
+ import { AddAdminUserDto } from '../dtos/add.admin.user.dto';
6
+ export declare class AdminUserController {
7
+ private readonly adminAccessService;
8
+ private readonly tenantService;
9
+ constructor(adminAccessService: AdminAccessService, tenantService: TenantService);
10
+ addClientUser(dto: AddClientUserDto): Promise<import("../..").UserEntity>;
11
+ addClientUsersBulk(dto: AddBulkUsersDto): Promise<import("../libraries/bulk.user.data.processor").BulkUserResult>;
12
+ addAdminUser(dto: AddAdminUserDto): Promise<import("../..").UserEntity>;
13
+ }
14
+ //# sourceMappingURL=admin.user.controller.d.ts.map