@rytass/bpm-core-nestjs-module 0.1.3 → 0.1.4

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 (609) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +3 -3
  3. package/src/index.js +18 -0
  4. package/src/index.js.map +1 -0
  5. package/src/lib/attachment/attachment-options.d.ts +44 -0
  6. package/src/lib/attachment/attachment-options.js +62 -0
  7. package/src/lib/attachment/attachment-options.js.map +1 -0
  8. package/src/lib/attachment/attachment-storage.provider.d.ts +4 -0
  9. package/src/lib/attachment/attachment-storage.provider.js +35 -0
  10. package/src/lib/attachment/attachment-storage.provider.js.map +1 -0
  11. package/src/lib/attachment/{attachment-storage.token.ts → attachment-storage.token.d.ts} +1 -3
  12. package/src/lib/attachment/attachment-storage.token.js +5 -0
  13. package/src/lib/attachment/attachment-storage.token.js.map +1 -0
  14. package/src/lib/attachment/attachment.controller.d.ts +8 -0
  15. package/src/lib/attachment/attachment.controller.js +38 -0
  16. package/src/lib/attachment/attachment.controller.js.map +1 -0
  17. package/src/lib/attachment/attachment.entity.d.ts +14 -0
  18. package/src/lib/attachment/attachment.entity.js +74 -0
  19. package/src/lib/attachment/attachment.entity.js.map +1 -0
  20. package/src/lib/attachment/attachment.module.d.ts +27 -0
  21. package/src/lib/attachment/attachment.module.js +103 -0
  22. package/src/lib/attachment/attachment.module.js.map +1 -0
  23. package/src/lib/attachment/attachment.mutations.d.ts +8 -0
  24. package/src/lib/attachment/attachment.mutations.js +35 -0
  25. package/src/lib/attachment/attachment.mutations.js.map +1 -0
  26. package/src/lib/attachment/attachment.queries.d.ts +9 -0
  27. package/src/lib/attachment/attachment.queries.js +78 -0
  28. package/src/lib/attachment/attachment.queries.js.map +1 -0
  29. package/src/lib/attachment/attachment.service.d.ts +49 -0
  30. package/src/lib/attachment/attachment.service.js +276 -0
  31. package/src/lib/attachment/attachment.service.js.map +1 -0
  32. package/src/lib/attachment/dto/upload-attachment.input.d.ts +11 -0
  33. package/src/lib/attachment/dto/upload-attachment.input.js +68 -0
  34. package/src/lib/attachment/dto/upload-attachment.input.js.map +1 -0
  35. package/src/lib/attachment/index.js +9 -0
  36. package/src/lib/attachment/index.js.map +1 -0
  37. package/src/lib/bpm/bpm-root.module.d.ts +155 -0
  38. package/src/lib/bpm/bpm-root.module.js +170 -0
  39. package/src/lib/bpm/bpm-root.module.js.map +1 -0
  40. package/src/lib/bpm/index.js +5 -0
  41. package/src/lib/bpm/index.js.map +1 -0
  42. package/src/lib/bpm-auth/bpm-auth-context.d.ts +24 -0
  43. package/src/lib/bpm-auth/bpm-auth-context.extractor.d.ts +4 -0
  44. package/src/lib/bpm-auth/bpm-auth-context.extractor.js +69 -0
  45. package/src/lib/bpm-auth/bpm-auth-context.extractor.js.map +1 -0
  46. package/src/lib/bpm-auth/bpm-auth-context.js +15 -0
  47. package/src/lib/bpm-auth/bpm-auth-context.js.map +1 -0
  48. package/src/lib/bpm-auth/bpm-auth.authorization.d.ts +12 -0
  49. package/src/lib/bpm-auth/bpm-auth.authorization.js +67 -0
  50. package/src/lib/bpm-auth/bpm-auth.authorization.js.map +1 -0
  51. package/src/lib/bpm-auth/bpm-auth.decorators.d.ts +3 -0
  52. package/src/lib/bpm-auth/bpm-auth.decorators.js +11 -0
  53. package/src/lib/bpm-auth/bpm-auth.decorators.js.map +1 -0
  54. package/src/lib/bpm-auth/bpm-auth.guard.d.ts +7 -0
  55. package/src/lib/bpm-auth/bpm-auth.guard.js +24 -0
  56. package/src/lib/bpm-auth/bpm-auth.guard.js.map +1 -0
  57. package/src/lib/bpm-auth/bpm-auth.module.d.ts +6 -0
  58. package/src/lib/bpm-auth/bpm-auth.module.js +69 -0
  59. package/src/lib/bpm-auth/bpm-auth.module.js.map +1 -0
  60. package/src/lib/bpm-auth/bpm-auth.options.d.ts +11 -0
  61. package/src/lib/bpm-auth/bpm-auth.options.js +3 -0
  62. package/src/lib/bpm-auth/bpm-auth.options.js.map +1 -0
  63. package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.d.ts +10 -0
  64. package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.js +40 -0
  65. package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.js.map +1 -0
  66. package/src/lib/bpm-auth/index.js +10 -0
  67. package/src/lib/bpm-auth/index.js.map +1 -0
  68. package/src/lib/common/filters/all-exceptions.filter.d.ts +25 -0
  69. package/src/lib/common/filters/all-exceptions.filter.js +93 -0
  70. package/src/lib/common/filters/all-exceptions.filter.js.map +1 -0
  71. package/src/lib/common/index.js +5 -0
  72. package/src/lib/common/index.js.map +1 -0
  73. package/src/lib/common/iso-duration.d.ts +1 -0
  74. package/src/lib/common/iso-duration.js +27 -0
  75. package/src/lib/common/iso-duration.js.map +1 -0
  76. package/src/lib/condition/condition.module.d.ts +2 -0
  77. package/src/lib/condition/condition.module.js +16 -0
  78. package/src/lib/condition/condition.module.js.map +1 -0
  79. package/src/lib/condition/condition.service.d.ts +16 -0
  80. package/src/lib/condition/condition.service.js +82 -0
  81. package/src/lib/condition/condition.service.js.map +1 -0
  82. package/src/lib/condition/index.js +6 -0
  83. package/src/lib/condition/index.js.map +1 -0
  84. package/src/lib/database/data-source.d.ts +4 -0
  85. package/src/lib/database/data-source.js +7 -0
  86. package/src/lib/database/data-source.js.map +1 -0
  87. package/src/lib/database/index.js +6 -0
  88. package/src/lib/database/index.js.map +1 -0
  89. package/src/lib/database/migration-runner.d.ts +1 -0
  90. package/src/lib/database/migration-runner.js +23 -0
  91. package/src/lib/database/migration-runner.js.map +1 -0
  92. package/src/lib/database/typeorm.config.d.ts +14 -0
  93. package/src/lib/database/typeorm.config.js +135 -0
  94. package/src/lib/database/typeorm.config.js.map +1 -0
  95. package/src/lib/delegation/delegation-rule.entity.d.ts +19 -0
  96. package/src/lib/delegation/delegation-rule.entity.js +99 -0
  97. package/src/lib/delegation/delegation-rule.entity.js.map +1 -0
  98. package/src/lib/delegation/delegation.enums.d.ts +10 -0
  99. package/src/lib/delegation/delegation.enums.js +23 -0
  100. package/src/lib/delegation/delegation.enums.js.map +1 -0
  101. package/src/lib/delegation/delegation.module.d.ts +2 -0
  102. package/src/lib/delegation/delegation.module.js +22 -0
  103. package/src/lib/delegation/delegation.module.js.map +1 -0
  104. package/src/lib/delegation/delegation.mutations.d.ts +11 -0
  105. package/src/lib/delegation/delegation.mutations.js +87 -0
  106. package/src/lib/delegation/delegation.mutations.js.map +1 -0
  107. package/src/lib/delegation/delegation.queries.d.ts +10 -0
  108. package/src/lib/delegation/delegation.queries.js +91 -0
  109. package/src/lib/delegation/delegation.queries.js.map +1 -0
  110. package/src/lib/delegation/delegation.service.d.ts +56 -0
  111. package/src/lib/delegation/delegation.service.js +268 -0
  112. package/src/lib/delegation/delegation.service.js.map +1 -0
  113. package/src/lib/delegation/dto/delegation-rule.input.d.ts +24 -0
  114. package/src/lib/delegation/dto/delegation-rule.input.js +143 -0
  115. package/src/lib/delegation/dto/delegation-rule.input.js.map +1 -0
  116. package/src/lib/delegation/index.js +9 -0
  117. package/src/lib/delegation/index.js.map +1 -0
  118. package/src/lib/form/dto/form-definition.input.d.ts +21 -0
  119. package/src/lib/form/dto/form-definition.input.js +103 -0
  120. package/src/lib/form/dto/form-definition.input.js.map +1 -0
  121. package/src/lib/form/form-definition-version.entity.d.ts +17 -0
  122. package/src/lib/form/form-definition-version.entity.js +84 -0
  123. package/src/lib/form/form-definition-version.entity.js.map +1 -0
  124. package/src/lib/form/form-definition.entity.d.ts +13 -0
  125. package/src/lib/form/form-definition.entity.js +66 -0
  126. package/src/lib/form/form-definition.entity.js.map +1 -0
  127. package/src/lib/form/form-schema-lint.object.d.ts +4 -0
  128. package/src/lib/form/form-schema-lint.object.js +20 -0
  129. package/src/lib/form/form-schema-lint.object.js.map +1 -0
  130. package/src/lib/form/form-schema.validator.d.ts +13 -0
  131. package/src/lib/form/form-schema.validator.js +354 -0
  132. package/src/lib/form/form-schema.validator.js.map +1 -0
  133. package/src/lib/form/form.enums.d.ts +9 -0
  134. package/src/lib/form/form.enums.js +22 -0
  135. package/src/lib/form/form.enums.js.map +1 -0
  136. package/src/lib/form/form.module.d.ts +2 -0
  137. package/src/lib/form/form.module.js +27 -0
  138. package/src/lib/form/form.module.js.map +1 -0
  139. package/src/lib/form/form.mutations.d.ts +14 -0
  140. package/src/lib/form/form.mutations.js +88 -0
  141. package/src/lib/form/form.mutations.js.map +1 -0
  142. package/src/lib/form/form.queries.d.ts +16 -0
  143. package/src/lib/form/form.queries.js +96 -0
  144. package/src/lib/form/form.queries.js.map +1 -0
  145. package/src/lib/form/form.service.d.ts +35 -0
  146. package/src/lib/form/form.service.js +297 -0
  147. package/src/lib/form/form.service.js.map +1 -0
  148. package/src/lib/form/index.js +12 -0
  149. package/src/lib/form/index.js.map +1 -0
  150. package/src/lib/identity/identity-options.d.ts +13 -0
  151. package/src/lib/identity/identity-options.js +20 -0
  152. package/src/lib/identity/identity-options.js.map +1 -0
  153. package/src/lib/identity/identity.module.d.ts +17 -0
  154. package/src/lib/identity/identity.module.js +65 -0
  155. package/src/lib/identity/identity.module.js.map +1 -0
  156. package/src/lib/identity/identity.queries.d.ts +12 -0
  157. package/src/lib/identity/identity.queries.js +79 -0
  158. package/src/lib/identity/identity.queries.js.map +1 -0
  159. package/src/lib/identity/identity.service.d.ts +22 -0
  160. package/src/lib/identity/identity.service.js +141 -0
  161. package/src/lib/identity/identity.service.js.map +1 -0
  162. package/src/lib/identity/index.js +7 -0
  163. package/src/lib/identity/index.js.map +1 -0
  164. package/src/lib/identity/member-base.adapter.d.ts +95 -0
  165. package/src/lib/identity/member-base.adapter.js +137 -0
  166. package/src/lib/identity/member-base.adapter.js.map +1 -0
  167. package/src/lib/identity/member-metadata-cache.entity.d.ts +8 -0
  168. package/src/lib/identity/member-metadata-cache.entity.js +39 -0
  169. package/src/lib/identity/member-metadata-cache.entity.js.map +1 -0
  170. package/src/lib/identity/member-profile.object.d.ts +8 -0
  171. package/src/lib/identity/member-profile.object.js +37 -0
  172. package/src/lib/identity/member-profile.object.js.map +1 -0
  173. package/src/lib/identity/{member-resolver.interface.ts → member-resolver.interface.d.ts} +5 -11
  174. package/src/lib/identity/member-resolver.interface.js +19 -0
  175. package/src/lib/identity/member-resolver.interface.js.map +1 -0
  176. package/src/lib/migrations/0000000000001-enable-postgres-extensions.d.ts +6 -0
  177. package/src/lib/migrations/0000000000001-enable-postgres-extensions.js +17 -0
  178. package/src/lib/migrations/0000000000001-enable-postgres-extensions.js.map +1 -0
  179. package/src/lib/migrations/0000000001000-identity-organization-foundation.d.ts +6 -0
  180. package/src/lib/migrations/{0000000001000-identity-organization-foundation.ts → 0000000001000-identity-organization-foundation.js} +29 -38
  181. package/src/lib/migrations/0000000001000-identity-organization-foundation.js.map +1 -0
  182. package/src/lib/migrations/0000000002000-form-builder-foundation.d.ts +6 -0
  183. package/src/lib/migrations/{0000000002000-form-builder-foundation.ts → 0000000002000-form-builder-foundation.js} +21 -22
  184. package/src/lib/migrations/0000000002000-form-builder-foundation.js.map +1 -0
  185. package/src/lib/migrations/0000000003000-approval-template-foundation.d.ts +6 -0
  186. package/src/lib/migrations/{0000000003000-approval-template-foundation.ts → 0000000003000-approval-template-foundation.js} +21 -24
  187. package/src/lib/migrations/0000000003000-approval-template-foundation.js.map +1 -0
  188. package/src/lib/migrations/0000000004000-workflow-engine-foundation.d.ts +6 -0
  189. package/src/lib/migrations/{0000000004000-workflow-engine-foundation.ts → 0000000004000-workflow-engine-foundation.js} +34 -46
  190. package/src/lib/migrations/0000000004000-workflow-engine-foundation.js.map +1 -0
  191. package/src/lib/migrations/0000000005000-delegation-rules.d.ts +6 -0
  192. package/src/lib/migrations/{0000000005000-delegation-rules.ts → 0000000005000-delegation-rules.js} +19 -20
  193. package/src/lib/migrations/0000000005000-delegation-rules.js.map +1 -0
  194. package/src/lib/migrations/0000000006000-notifications-sla.d.ts +6 -0
  195. package/src/lib/migrations/{0000000006000-notifications-sla.ts → 0000000006000-notifications-sla.js} +23 -26
  196. package/src/lib/migrations/0000000006000-notifications-sla.js.map +1 -0
  197. package/src/lib/migrations/0000000007000-signatures-attachments.d.ts +6 -0
  198. package/src/lib/migrations/{0000000007000-signatures-attachments.ts → 0000000007000-signatures-attachments.js} +27 -28
  199. package/src/lib/migrations/0000000007000-signatures-attachments.js.map +1 -0
  200. package/src/lib/migrations/0000000008000-approval-template-categories.d.ts +6 -0
  201. package/src/lib/migrations/{0000000008000-approval-template-categories.ts → 0000000008000-approval-template-categories.js} +25 -28
  202. package/src/lib/migrations/0000000008000-approval-template-categories.js.map +1 -0
  203. package/src/lib/migrations/0000000009000-task-candidates.d.ts +6 -0
  204. package/src/lib/migrations/{0000000009000-task-candidates.ts → 0000000009000-task-candidates.js} +23 -26
  205. package/src/lib/migrations/0000000009000-task-candidates.js.map +1 -0
  206. package/src/lib/migrations/0000000010000-notification-delivery-state.d.ts +6 -0
  207. package/src/lib/migrations/{0000000010000-notification-delivery-state.ts → 0000000010000-notification-delivery-state.js} +17 -16
  208. package/src/lib/migrations/0000000010000-notification-delivery-state.js.map +1 -0
  209. package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.d.ts +6 -0
  210. package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.js +22 -0
  211. package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.js.map +1 -0
  212. package/src/lib/migrations/0000000012000-notification-sla-idempotency.d.ts +6 -0
  213. package/src/lib/migrations/0000000012000-notification-sla-idempotency.js +21 -0
  214. package/src/lib/migrations/0000000012000-notification-sla-idempotency.js.map +1 -0
  215. package/src/lib/migrations/0000000013000-workflow-query-indexes.d.ts +6 -0
  216. package/src/lib/migrations/0000000013000-workflow-query-indexes.js +80 -0
  217. package/src/lib/migrations/0000000013000-workflow-query-indexes.js.map +1 -0
  218. package/src/lib/migrations/index.d.ts +16 -0
  219. package/src/lib/migrations/index.js +49 -0
  220. package/src/lib/migrations/index.js.map +1 -0
  221. package/src/lib/notification/dto/notification-preference.input.d.ts +9 -0
  222. package/src/lib/notification/dto/notification-preference.input.js +53 -0
  223. package/src/lib/notification/dto/notification-preference.input.js.map +1 -0
  224. package/src/lib/notification/index.js +11 -0
  225. package/src/lib/notification/index.js.map +1 -0
  226. package/src/lib/notification/notification-delivery-scheduler.service.d.ts +13 -0
  227. package/src/lib/notification/notification-delivery-scheduler.service.js +53 -0
  228. package/src/lib/notification/notification-delivery-scheduler.service.js.map +1 -0
  229. package/src/lib/notification/notification-delivery.service.d.ts +23 -0
  230. package/src/lib/notification/notification-delivery.service.js +245 -0
  231. package/src/lib/notification/notification-delivery.service.js.map +1 -0
  232. package/src/lib/notification/notification-dispatcher.token.d.ts +7 -0
  233. package/src/lib/notification/notification-dispatcher.token.js +5 -0
  234. package/src/lib/notification/notification-dispatcher.token.js.map +1 -0
  235. package/src/lib/notification/notification-options.d.ts +215 -0
  236. package/src/lib/notification/notification-options.js +128 -0
  237. package/src/lib/notification/notification-options.js.map +1 -0
  238. package/src/lib/notification/notification-options.module.d.ts +23 -0
  239. package/src/lib/notification/notification-options.module.js +41 -0
  240. package/src/lib/notification/notification-options.module.js.map +1 -0
  241. package/src/lib/notification/notification-preference.entity.d.ts +10 -0
  242. package/src/lib/notification/notification-preference.entity.js +50 -0
  243. package/src/lib/notification/notification-preference.entity.js.map +1 -0
  244. package/src/lib/notification/notification-sla-scheduler.service.d.ts +13 -0
  245. package/src/lib/notification/notification-sla-scheduler.service.js +51 -0
  246. package/src/lib/notification/notification-sla-scheduler.service.js.map +1 -0
  247. package/src/lib/notification/notification-template.d.ts +13 -0
  248. package/src/lib/notification/notification-template.js +61 -0
  249. package/src/lib/notification/notification-template.js.map +1 -0
  250. package/src/lib/notification/notification.entity.d.ts +23 -0
  251. package/src/lib/notification/notification.entity.js +122 -0
  252. package/src/lib/notification/notification.entity.js.map +1 -0
  253. package/src/lib/notification/notification.enums.d.ts +24 -0
  254. package/src/lib/notification/notification.enums.js +45 -0
  255. package/src/lib/notification/notification.enums.js.map +1 -0
  256. package/src/lib/notification/notification.module.d.ts +2 -0
  257. package/src/lib/notification/notification.module.js +45 -0
  258. package/src/lib/notification/notification.module.js.map +1 -0
  259. package/src/lib/notification/notification.mutations.d.ts +11 -0
  260. package/src/lib/notification/notification.mutations.js +64 -0
  261. package/src/lib/notification/notification.mutations.js.map +1 -0
  262. package/src/lib/notification/notification.queries.d.ts +11 -0
  263. package/src/lib/notification/notification.queries.js +77 -0
  264. package/src/lib/notification/notification.queries.js.map +1 -0
  265. package/src/lib/notification/notification.service.d.ts +81 -0
  266. package/src/lib/notification/notification.service.js +621 -0
  267. package/src/lib/notification/notification.service.js.map +1 -0
  268. package/src/lib/organization/dto/manager-resolution.input.d.ts +18 -0
  269. package/src/lib/organization/dto/manager-resolution.input.js +107 -0
  270. package/src/lib/organization/dto/manager-resolution.input.js.map +1 -0
  271. package/src/lib/organization/dto/membership.input.d.ts +16 -0
  272. package/src/lib/organization/dto/membership.input.js +99 -0
  273. package/src/lib/organization/dto/membership.input.js.map +1 -0
  274. package/src/lib/organization/dto/org-unit.input.d.ts +24 -0
  275. package/src/lib/organization/dto/org-unit.input.js +119 -0
  276. package/src/lib/organization/dto/org-unit.input.js.map +1 -0
  277. package/src/lib/organization/dto/position.input.d.ts +13 -0
  278. package/src/lib/organization/dto/position.input.js +70 -0
  279. package/src/lib/organization/dto/position.input.js.map +1 -0
  280. package/src/lib/organization/index.js +16 -0
  281. package/src/lib/organization/index.js.map +1 -0
  282. package/src/lib/organization/json-metadata.d.ts +1 -0
  283. package/src/lib/organization/json-metadata.js +14 -0
  284. package/src/lib/organization/json-metadata.js.map +1 -0
  285. package/src/lib/organization/manager-resolution.entity.d.ts +11 -0
  286. package/src/lib/organization/manager-resolution.entity.js +55 -0
  287. package/src/lib/organization/manager-resolution.entity.js.map +1 -0
  288. package/src/lib/organization/membership.entity.d.ts +11 -0
  289. package/src/lib/organization/membership.entity.js +60 -0
  290. package/src/lib/organization/membership.entity.js.map +1 -0
  291. package/src/lib/organization/org-unit-tree-commit-result.object.d.ts +4 -0
  292. package/src/lib/organization/org-unit-tree-commit-result.object.js +17 -0
  293. package/src/lib/organization/org-unit-tree-commit-result.object.js.map +1 -0
  294. package/src/lib/organization/org-unit.entity.d.ts +13 -0
  295. package/src/lib/organization/org-unit.entity.js +64 -0
  296. package/src/lib/organization/org-unit.entity.js.map +1 -0
  297. package/src/lib/organization/organization-summary.object.d.ts +6 -0
  298. package/src/lib/organization/organization-summary.object.js +28 -0
  299. package/src/lib/organization/organization-summary.object.js.map +1 -0
  300. package/src/lib/organization/organization.enums.d.ts +11 -0
  301. package/src/lib/organization/organization.enums.js +22 -0
  302. package/src/lib/organization/organization.enums.js.map +1 -0
  303. package/src/lib/organization/organization.module.d.ts +2 -0
  304. package/src/lib/organization/organization.module.js +35 -0
  305. package/src/lib/organization/organization.module.js.map +1 -0
  306. package/src/lib/organization/organization.mutations.d.ts +26 -0
  307. package/src/lib/organization/organization.mutations.js +148 -0
  308. package/src/lib/organization/organization.mutations.js.map +1 -0
  309. package/src/lib/organization/organization.queries.d.ts +23 -0
  310. package/src/lib/organization/organization.queries.js +202 -0
  311. package/src/lib/organization/organization.queries.js.map +1 -0
  312. package/src/lib/organization/organization.service.d.ts +102 -0
  313. package/src/lib/organization/organization.service.js +751 -0
  314. package/src/lib/organization/organization.service.js.map +1 -0
  315. package/src/lib/organization/position.entity.d.ts +9 -0
  316. package/src/lib/organization/position.entity.js +48 -0
  317. package/src/lib/organization/position.entity.js.map +1 -0
  318. package/src/lib/organization/resolved-manager.object.d.ts +4 -0
  319. package/src/lib/organization/resolved-manager.object.js +20 -0
  320. package/src/lib/organization/resolved-manager.object.js.map +1 -0
  321. package/src/lib/signature/index.js +8 -0
  322. package/src/lib/signature/index.js.map +1 -0
  323. package/src/lib/signature/signature-options.d.ts +33 -0
  324. package/src/lib/signature/signature-options.js +51 -0
  325. package/src/lib/signature/signature-options.js.map +1 -0
  326. package/src/lib/signature/signature-verification.object.d.ts +6 -0
  327. package/src/lib/signature/signature-verification.object.js +28 -0
  328. package/src/lib/signature/signature-verification.object.js.map +1 -0
  329. package/src/lib/signature/signature.entity.d.ts +16 -0
  330. package/src/lib/signature/signature.entity.js +88 -0
  331. package/src/lib/signature/signature.entity.js.map +1 -0
  332. package/src/lib/signature/signature.module.d.ts +11 -0
  333. package/src/lib/signature/signature.module.js +60 -0
  334. package/src/lib/signature/signature.module.js.map +1 -0
  335. package/src/lib/signature/signature.queries.d.ts +11 -0
  336. package/src/lib/signature/signature.queries.js +46 -0
  337. package/src/lib/signature/signature.queries.js.map +1 -0
  338. package/src/lib/signature/signature.service.d.ts +25 -0
  339. package/src/lib/signature/signature.service.js +124 -0
  340. package/src/lib/signature/signature.service.js.map +1 -0
  341. package/src/lib/template/approval-template-category.entity.d.ts +9 -0
  342. package/src/lib/template/approval-template-category.entity.js +49 -0
  343. package/src/lib/template/approval-template-category.entity.js.map +1 -0
  344. package/src/lib/template/approval-template-version.entity.d.ts +21 -0
  345. package/src/lib/template/approval-template-version.entity.js +106 -0
  346. package/src/lib/template/approval-template-version.entity.js.map +1 -0
  347. package/src/lib/template/approval-template.entity.d.ts +14 -0
  348. package/src/lib/template/approval-template.entity.js +74 -0
  349. package/src/lib/template/approval-template.entity.js.map +1 -0
  350. package/src/lib/template/dto/approval-template.input.d.ts +36 -0
  351. package/src/lib/template/dto/approval-template.input.js +187 -0
  352. package/src/lib/template/dto/approval-template.input.js.map +1 -0
  353. package/src/lib/template/index.js +12 -0
  354. package/src/lib/template/index.js.map +1 -0
  355. package/src/lib/template/template.enums.d.ts +14 -0
  356. package/src/lib/template/template.enums.js +31 -0
  357. package/src/lib/template/template.enums.js.map +1 -0
  358. package/src/lib/template/template.module.d.ts +2 -0
  359. package/src/lib/template/template.module.js +33 -0
  360. package/src/lib/template/template.module.js.map +1 -0
  361. package/src/lib/template/template.mutations.d.ts +20 -0
  362. package/src/lib/template/template.mutations.js +139 -0
  363. package/src/lib/template/template.mutations.js.map +1 -0
  364. package/src/lib/template/template.queries.d.ts +16 -0
  365. package/src/lib/template/template.queries.js +133 -0
  366. package/src/lib/template/template.queries.js.map +1 -0
  367. package/src/lib/template/template.service.d.ts +64 -0
  368. package/src/lib/template/template.service.js +521 -0
  369. package/src/lib/template/template.service.js.map +1 -0
  370. package/src/lib/template/workflow-definition.validator.d.ts +9 -0
  371. package/src/lib/template/workflow-definition.validator.js +362 -0
  372. package/src/lib/template/workflow-definition.validator.js.map +1 -0
  373. package/src/lib/testing/cel-js.jest.d.ts +15 -0
  374. package/src/lib/testing/cel-js.jest.js +27 -0
  375. package/src/lib/testing/cel-js.jest.js.map +1 -0
  376. package/src/lib/workflow-engine/activity-log.entity.d.ts +12 -0
  377. package/src/lib/workflow-engine/activity-log.entity.js +62 -0
  378. package/src/lib/workflow-engine/activity-log.entity.js.map +1 -0
  379. package/src/lib/workflow-engine/approval-instance-page-info.object.d.ts +8 -0
  380. package/src/lib/workflow-engine/approval-instance-page-info.object.js +36 -0
  381. package/src/lib/workflow-engine/approval-instance-page-info.object.js.map +1 -0
  382. package/src/lib/workflow-engine/approval-instance.entity.d.ts +22 -0
  383. package/src/lib/workflow-engine/approval-instance.entity.js +113 -0
  384. package/src/lib/workflow-engine/approval-instance.entity.js.map +1 -0
  385. package/src/lib/workflow-engine/dto/cancel-approval-instance.input.d.ts +5 -0
  386. package/src/lib/workflow-engine/dto/cancel-approval-instance.input.js +29 -0
  387. package/src/lib/workflow-engine/dto/cancel-approval-instance.input.js.map +1 -0
  388. package/src/lib/workflow-engine/dto/decide-task.input.d.ts +9 -0
  389. package/src/lib/workflow-engine/dto/decide-task.input.js +47 -0
  390. package/src/lib/workflow-engine/dto/decide-task.input.js.map +1 -0
  391. package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.d.ts +6 -0
  392. package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.js +34 -0
  393. package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.js.map +1 -0
  394. package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.d.ts +6 -0
  395. package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.js +34 -0
  396. package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.js.map +1 -0
  397. package/src/lib/workflow-engine/dto/submit-approval-instance.input.d.ts +7 -0
  398. package/src/lib/workflow-engine/dto/submit-approval-instance.input.js +40 -0
  399. package/src/lib/workflow-engine/dto/submit-approval-instance.input.js.map +1 -0
  400. package/src/lib/workflow-engine/index.js +24 -0
  401. package/src/lib/workflow-engine/index.js.map +1 -0
  402. package/src/lib/workflow-engine/task-candidate.entity.d.ts +14 -0
  403. package/src/lib/workflow-engine/task-candidate.entity.js +72 -0
  404. package/src/lib/workflow-engine/task-candidate.entity.js.map +1 -0
  405. package/src/lib/workflow-engine/task-decision.entity.d.ts +12 -0
  406. package/src/lib/workflow-engine/task-decision.entity.js +60 -0
  407. package/src/lib/workflow-engine/task-decision.entity.js.map +1 -0
  408. package/src/lib/workflow-engine/task.entity.d.ts +20 -0
  409. package/src/lib/workflow-engine/task.entity.js +109 -0
  410. package/src/lib/workflow-engine/task.entity.js.map +1 -0
  411. package/src/lib/workflow-engine/workflow-condition-evaluator.d.ts +5 -0
  412. package/src/lib/workflow-engine/workflow-condition-evaluator.js +107 -0
  413. package/src/lib/workflow-engine/workflow-condition-evaluator.js.map +1 -0
  414. package/src/lib/workflow-engine/workflow-dashboard-summary.object.d.ts +8 -0
  415. package/src/lib/workflow-engine/workflow-dashboard-summary.object.js +36 -0
  416. package/src/lib/workflow-engine/workflow-dashboard-summary.object.js.map +1 -0
  417. package/src/lib/workflow-engine/workflow-dry-run.object.d.ts +21 -0
  418. package/src/lib/workflow-engine/workflow-dry-run.object.js +86 -0
  419. package/src/lib/workflow-engine/workflow-dry-run.object.js.map +1 -0
  420. package/src/lib/workflow-engine/workflow-engine.enums.d.ts +58 -0
  421. package/src/lib/workflow-engine/workflow-engine.enums.js +95 -0
  422. package/src/lib/workflow-engine/workflow-engine.enums.js.map +1 -0
  423. package/src/lib/workflow-engine/workflow-engine.module.d.ts +9 -0
  424. package/src/lib/workflow-engine/workflow-engine.module.js +76 -0
  425. package/src/lib/workflow-engine/workflow-engine.module.js.map +1 -0
  426. package/src/lib/workflow-engine/workflow-engine.mutations.d.ts +19 -0
  427. package/src/lib/workflow-engine/workflow-engine.mutations.js +106 -0
  428. package/src/lib/workflow-engine/workflow-engine.mutations.js.map +1 -0
  429. package/src/lib/workflow-engine/workflow-engine.queries.d.ts +29 -0
  430. package/src/lib/workflow-engine/workflow-engine.queries.js +225 -0
  431. package/src/lib/workflow-engine/workflow-engine.queries.js.map +1 -0
  432. package/src/lib/workflow-engine/workflow-engine.service.d.ts +145 -0
  433. package/src/lib/workflow-engine/workflow-engine.service.js +2785 -0
  434. package/src/lib/workflow-engine/workflow-engine.service.js.map +1 -0
  435. package/src/lib/workflow-engine/{workflow-engine.tokens.ts → workflow-engine.tokens.d.ts} +3 -9
  436. package/src/lib/workflow-engine/workflow-engine.tokens.js +5 -0
  437. package/src/lib/workflow-engine/workflow-engine.tokens.js.map +1 -0
  438. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.d.ts +18 -0
  439. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.js +39 -0
  440. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.js.map +1 -0
  441. package/src/lib/workflow-engine/workflow-token.entity.d.ts +10 -0
  442. package/src/lib/workflow-engine/workflow-token.entity.js +50 -0
  443. package/src/lib/workflow-engine/workflow-token.entity.js.map +1 -0
  444. package/eslint.config.mjs +0 -20
  445. package/jest.config.cts +0 -15
  446. package/project.json +0 -58
  447. package/src/lib/attachment/attachment-options.spec.ts +0 -45
  448. package/src/lib/attachment/attachment-options.ts +0 -130
  449. package/src/lib/attachment/attachment-storage.provider.spec.ts +0 -79
  450. package/src/lib/attachment/attachment-storage.provider.ts +0 -60
  451. package/src/lib/attachment/attachment.controller.ts +0 -39
  452. package/src/lib/attachment/attachment.entity.ts +0 -59
  453. package/src/lib/attachment/attachment.module.ts +0 -149
  454. package/src/lib/attachment/attachment.mutations.ts +0 -22
  455. package/src/lib/attachment/attachment.queries.ts +0 -65
  456. package/src/lib/attachment/attachment.service.spec.ts +0 -319
  457. package/src/lib/attachment/attachment.service.ts +0 -477
  458. package/src/lib/attachment/dto/upload-attachment.input.ts +0 -60
  459. package/src/lib/bpm/bpm-root.module.spec.ts +0 -138
  460. package/src/lib/bpm/bpm-root.module.ts +0 -320
  461. package/src/lib/bpm-auth/bpm-auth-context.extractor.ts +0 -106
  462. package/src/lib/bpm-auth/bpm-auth-context.ts +0 -40
  463. package/src/lib/bpm-auth/bpm-auth.authorization.ts +0 -80
  464. package/src/lib/bpm-auth/bpm-auth.decorators.ts +0 -19
  465. package/src/lib/bpm-auth/bpm-auth.guard.ts +0 -31
  466. package/src/lib/bpm-auth/bpm-auth.module.spec.ts +0 -106
  467. package/src/lib/bpm-auth/bpm-auth.module.ts +0 -69
  468. package/src/lib/bpm-auth/bpm-auth.options.ts +0 -21
  469. package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.ts +0 -55
  470. package/src/lib/common/filters/all-exceptions.filter.ts +0 -138
  471. package/src/lib/common/iso-duration.ts +0 -31
  472. package/src/lib/condition/condition.module.ts +0 -8
  473. package/src/lib/condition/condition.service.spec.ts +0 -50
  474. package/src/lib/condition/condition.service.ts +0 -141
  475. package/src/lib/database/data-source.ts +0 -7
  476. package/src/lib/database/migration-runner.ts +0 -24
  477. package/src/lib/database/typeorm.config.ts +0 -217
  478. package/src/lib/delegation/delegation-rule.entity.ts +0 -84
  479. package/src/lib/delegation/delegation.enums.ts +0 -21
  480. package/src/lib/delegation/delegation.module.ts +0 -14
  481. package/src/lib/delegation/delegation.mutations.ts +0 -92
  482. package/src/lib/delegation/delegation.queries.ts +0 -111
  483. package/src/lib/delegation/delegation.service.spec.ts +0 -295
  484. package/src/lib/delegation/delegation.service.ts +0 -482
  485. package/src/lib/delegation/dto/delegation-rule.input.ts +0 -125
  486. package/src/lib/form/dto/form-definition.input.ts +0 -73
  487. package/src/lib/form/form-definition-version.entity.ts +0 -66
  488. package/src/lib/form/form-definition.entity.ts +0 -54
  489. package/src/lib/form/form-schema-lint.object.ts +0 -10
  490. package/src/lib/form/form-schema.validator.spec.ts +0 -180
  491. package/src/lib/form/form-schema.validator.ts +0 -538
  492. package/src/lib/form/form.enums.ts +0 -20
  493. package/src/lib/form/form.module.ts +0 -19
  494. package/src/lib/form/form.mutations.ts +0 -68
  495. package/src/lib/form/form.queries.ts +0 -72
  496. package/src/lib/form/form.service.spec.ts +0 -144
  497. package/src/lib/form/form.service.ts +0 -490
  498. package/src/lib/identity/identity-options.ts +0 -41
  499. package/src/lib/identity/identity.module.ts +0 -96
  500. package/src/lib/identity/identity.queries.ts +0 -61
  501. package/src/lib/identity/identity.service.spec.ts +0 -105
  502. package/src/lib/identity/identity.service.ts +0 -200
  503. package/src/lib/identity/member-base.adapter.spec.ts +0 -77
  504. package/src/lib/identity/member-base.adapter.ts +0 -244
  505. package/src/lib/identity/member-metadata-cache.entity.ts +0 -27
  506. package/src/lib/identity/member-profile.object.ts +0 -28
  507. package/src/lib/migrations/0000000000001-enable-postgres-extensions.ts +0 -14
  508. package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.ts +0 -19
  509. package/src/lib/migrations/0000000012000-notification-sla-idempotency.ts +0 -22
  510. package/src/lib/migrations/0000000013000-workflow-query-indexes.ts +0 -113
  511. package/src/lib/migrations/index.ts +0 -47
  512. package/src/lib/notification/dto/notification-preference.input.ts +0 -46
  513. package/src/lib/notification/notification-delivery-scheduler.service.ts +0 -69
  514. package/src/lib/notification/notification-delivery.service.spec.ts +0 -315
  515. package/src/lib/notification/notification-delivery.service.ts +0 -339
  516. package/src/lib/notification/notification-dispatcher.token.ts +0 -13
  517. package/src/lib/notification/notification-options.module.ts +0 -67
  518. package/src/lib/notification/notification-options.spec.ts +0 -93
  519. package/src/lib/notification/notification-options.ts +0 -452
  520. package/src/lib/notification/notification-preference.entity.ts +0 -35
  521. package/src/lib/notification/notification-sla-scheduler.service.ts +0 -66
  522. package/src/lib/notification/notification-template.spec.ts +0 -33
  523. package/src/lib/notification/notification-template.ts +0 -97
  524. package/src/lib/notification/notification.entity.ts +0 -102
  525. package/src/lib/notification/notification.enums.ts +0 -45
  526. package/src/lib/notification/notification.module.ts +0 -37
  527. package/src/lib/notification/notification.mutations.ts +0 -47
  528. package/src/lib/notification/notification.queries.ts +0 -64
  529. package/src/lib/notification/notification.service.spec.ts +0 -412
  530. package/src/lib/notification/notification.service.ts +0 -974
  531. package/src/lib/organization/dto/manager-resolution.input.ts +0 -91
  532. package/src/lib/organization/dto/membership.input.ts +0 -77
  533. package/src/lib/organization/dto/org-unit.input.ts +0 -96
  534. package/src/lib/organization/dto/position.input.ts +0 -50
  535. package/src/lib/organization/json-metadata.ts +0 -15
  536. package/src/lib/organization/manager-resolution.entity.ts +0 -44
  537. package/src/lib/organization/membership.entity.ts +0 -50
  538. package/src/lib/organization/org-unit-tree-commit-result.object.ts +0 -8
  539. package/src/lib/organization/org-unit.entity.ts +0 -53
  540. package/src/lib/organization/organization-summary.object.ts +0 -16
  541. package/src/lib/organization/organization.enums.ts +0 -19
  542. package/src/lib/organization/organization.module.ts +0 -27
  543. package/src/lib/organization/organization.mutations.ts +0 -115
  544. package/src/lib/organization/organization.queries.ts +0 -188
  545. package/src/lib/organization/organization.service.spec.ts +0 -760
  546. package/src/lib/organization/organization.service.ts +0 -1216
  547. package/src/lib/organization/position.entity.ts +0 -39
  548. package/src/lib/organization/resolved-manager.object.ts +0 -10
  549. package/src/lib/signature/signature-options.spec.ts +0 -60
  550. package/src/lib/signature/signature-options.ts +0 -120
  551. package/src/lib/signature/signature-verification.object.ts +0 -16
  552. package/src/lib/signature/signature.entity.ts +0 -62
  553. package/src/lib/signature/signature.module.ts +0 -80
  554. package/src/lib/signature/signature.queries.ts +0 -37
  555. package/src/lib/signature/signature.service.spec.ts +0 -134
  556. package/src/lib/signature/signature.service.ts +0 -205
  557. package/src/lib/template/approval-template-category.entity.ts +0 -40
  558. package/src/lib/template/approval-template-version.entity.ts +0 -82
  559. package/src/lib/template/approval-template.entity.ts +0 -64
  560. package/src/lib/template/dto/approval-template.input.ts +0 -147
  561. package/src/lib/template/template.enums.ts +0 -30
  562. package/src/lib/template/template.module.ts +0 -25
  563. package/src/lib/template/template.mutations.ts +0 -106
  564. package/src/lib/template/template.queries.ts +0 -119
  565. package/src/lib/template/template.service.spec.ts +0 -476
  566. package/src/lib/template/template.service.ts +0 -820
  567. package/src/lib/template/workflow-definition.validator.spec.ts +0 -595
  568. package/src/lib/template/workflow-definition.validator.ts +0 -539
  569. package/src/lib/testing/cel-js.jest.ts +0 -46
  570. package/src/lib/workflow-engine/activity-log.entity.ts +0 -48
  571. package/src/lib/workflow-engine/approval-instance-page-info.object.ts +0 -22
  572. package/src/lib/workflow-engine/approval-instance.entity.ts +0 -86
  573. package/src/lib/workflow-engine/dto/cancel-approval-instance.input.ts +0 -18
  574. package/src/lib/workflow-engine/dto/decide-task.input.ts +0 -33
  575. package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.ts +0 -22
  576. package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.ts +0 -22
  577. package/src/lib/workflow-engine/dto/submit-approval-instance.input.ts +0 -27
  578. package/src/lib/workflow-engine/task-candidate.entity.ts +0 -56
  579. package/src/lib/workflow-engine/task-decision.entity.ts +0 -43
  580. package/src/lib/workflow-engine/task.entity.ts +0 -85
  581. package/src/lib/workflow-engine/workflow-condition-evaluator.ts +0 -168
  582. package/src/lib/workflow-engine/workflow-dashboard-summary.object.ts +0 -22
  583. package/src/lib/workflow-engine/workflow-dry-run.object.ts +0 -58
  584. package/src/lib/workflow-engine/workflow-engine.enums.ts +0 -99
  585. package/src/lib/workflow-engine/workflow-engine.module.ts +0 -75
  586. package/src/lib/workflow-engine/workflow-engine.mutations.ts +0 -85
  587. package/src/lib/workflow-engine/workflow-engine.queries.ts +0 -229
  588. package/src/lib/workflow-engine/workflow-engine.service.spec.ts +0 -2689
  589. package/src/lib/workflow-engine/workflow-engine.service.ts +0 -4707
  590. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.ts +0 -69
  591. package/src/lib/workflow-engine/workflow-token.entity.ts +0 -40
  592. package/tsconfig.json +0 -24
  593. package/tsconfig.lib.json +0 -16
  594. package/tsconfig.spec.json +0 -16
  595. /package/src/{index.ts → index.d.ts} +0 -0
  596. /package/src/lib/attachment/{index.ts → index.d.ts} +0 -0
  597. /package/src/lib/bpm/{index.ts → index.d.ts} +0 -0
  598. /package/src/lib/bpm-auth/{index.ts → index.d.ts} +0 -0
  599. /package/src/lib/common/{index.ts → index.d.ts} +0 -0
  600. /package/src/lib/condition/{index.ts → index.d.ts} +0 -0
  601. /package/src/lib/database/{index.ts → index.d.ts} +0 -0
  602. /package/src/lib/delegation/{index.ts → index.d.ts} +0 -0
  603. /package/src/lib/form/{index.ts → index.d.ts} +0 -0
  604. /package/src/lib/identity/{index.ts → index.d.ts} +0 -0
  605. /package/src/lib/notification/{index.ts → index.d.ts} +0 -0
  606. /package/src/lib/organization/{index.ts → index.d.ts} +0 -0
  607. /package/src/lib/signature/{index.ts → index.d.ts} +0 -0
  608. /package/src/lib/template/{index.ts → index.d.ts} +0 -0
  609. /package/src/lib/workflow-engine/{index.ts → index.d.ts} +0 -0
@@ -0,0 +1,215 @@
1
+ import { InjectionToken } from '@nestjs/common';
2
+ import { NotificationChannelEnum, NotificationDigestModeEnum } from './notification.enums';
3
+ export type NotificationFeatureToggle = boolean | 'auto';
4
+ export type NotificationTemplateEngine = 'handlebars' | 'simple';
5
+ export interface BPMRootNotificationOptions {
6
+ /**
7
+ * Enables creation and display of in-app notification records.
8
+ *
9
+ * Defaults to `true`. Set to `false` only when the host application wants
10
+ * BPM to run without notification center data.
11
+ */
12
+ readonly notificationInAppEnabled?: boolean;
13
+ /**
14
+ * Controls whether BPM may create and dispatch email notifications.
15
+ *
16
+ * Use `auto` to enable email only when all SMTP connection fields are
17
+ * present. Use `false` to force email off even when SMTP secrets exist.
18
+ * Defaults to `auto`.
19
+ */
20
+ readonly notificationEmailEnabled?: NotificationFeatureToggle;
21
+ /**
22
+ * SMTP server hostname used for BPM email delivery.
23
+ *
24
+ * Required when `notificationEmailEnabled` is `true`; required for auto
25
+ * enablement when `notificationEmailEnabled` is `auto`.
26
+ */
27
+ readonly notificationEmailSmtpHost?: string | null;
28
+ /**
29
+ * SMTP server port used for BPM email delivery.
30
+ *
31
+ * Common values are `587` for STARTTLS and `465` for implicit TLS. Required
32
+ * when `notificationEmailEnabled` is `true`; required for auto enablement
33
+ * when `notificationEmailEnabled` is `auto`.
34
+ */
35
+ readonly notificationEmailSmtpPort?: number | null;
36
+ /**
37
+ * Whether the SMTP connection should use implicit TLS.
38
+ *
39
+ * Use `false` for STARTTLS on port `587`; use `true` for implicit TLS on
40
+ * port `465`. Defaults to `false`.
41
+ */
42
+ readonly notificationEmailSmtpSecure?: boolean;
43
+ /**
44
+ * SMTP authentication username used by BPM email delivery.
45
+ *
46
+ * Required when `notificationEmailEnabled` is `true`; required for auto
47
+ * enablement when `notificationEmailEnabled` is `auto`.
48
+ */
49
+ readonly notificationEmailSmtpUsername?: string | null;
50
+ /**
51
+ * SMTP authentication password or app password used by BPM email delivery.
52
+ *
53
+ * Required when `notificationEmailEnabled` is `true`; required for auto
54
+ * enablement when `notificationEmailEnabled` is `auto`.
55
+ */
56
+ readonly notificationEmailSmtpPassword?: string | null;
57
+ /**
58
+ * Sender address used for BPM email delivery.
59
+ *
60
+ * Accepts either an email address or an RFC 5322 display format such as
61
+ * `BPM <bpm@example.com>`. Required when email delivery is enabled.
62
+ */
63
+ readonly notificationEmailFrom?: string | null;
64
+ /**
65
+ * Controls whether BPM may create and dispatch webhook notifications.
66
+ *
67
+ * Use `auto` to enable webhooks only when
68
+ * `notificationWebhookSigningSecret` is present. Use `false` to force
69
+ * webhooks off. Defaults to `auto`.
70
+ */
71
+ readonly notificationWebhookEnabled?: NotificationFeatureToggle;
72
+ /**
73
+ * Secret used to sign BPM webhook payloads.
74
+ *
75
+ * Required when `notificationWebhookEnabled` is `true`; required for auto
76
+ * enablement when `notificationWebhookEnabled` is `auto`.
77
+ */
78
+ readonly notificationWebhookSigningSecret?: string | null;
79
+ /**
80
+ * Default endpoint URL used for BPM webhook notification delivery.
81
+ *
82
+ * Required when `notificationWebhookEnabled` is `true`; required for auto
83
+ * enablement when `notificationWebhookEnabled` is `auto`.
84
+ */
85
+ readonly notificationWebhookEndpointUrl?: string | null;
86
+ /**
87
+ * Enables the background delivery scheduler for pending email and webhook
88
+ * notifications.
89
+ *
90
+ * Defaults to `false`. Set to `true` only in a dedicated worker process or
91
+ * single-replica host that should run notification delivery itself.
92
+ */
93
+ readonly notificationDeliverySchedulerEnabled?: boolean;
94
+ /**
95
+ * Interval in milliseconds between pending notification delivery scans.
96
+ *
97
+ * Defaults to `30000`. Values below `1000` are normalized to `1000` to avoid
98
+ * tight loops in long-running API processes.
99
+ */
100
+ readonly notificationDeliveryScanIntervalMs?: number;
101
+ /**
102
+ * Maximum pending notifications processed by each delivery scan.
103
+ */
104
+ readonly notificationDeliveryBatchSize?: number;
105
+ /**
106
+ * Maximum delivery attempts before a pending email/webhook notification is
107
+ * marked failed.
108
+ */
109
+ readonly notificationDeliveryMaxAttempts?: number;
110
+ /**
111
+ * Base retry delay in milliseconds. Retry scheduling multiplies this value
112
+ * by the current attempt count.
113
+ */
114
+ readonly notificationDeliveryRetryBaseDelayMs?: number;
115
+ /**
116
+ * Enables the background SLA scheduler that scans pending tasks.
117
+ *
118
+ * Defaults to `false`. Set to `true` only in a dedicated worker process or
119
+ * single-replica host that should run SLA scans itself.
120
+ */
121
+ readonly notificationSlaSchedulerEnabled?: boolean;
122
+ /**
123
+ * Interval in milliseconds between automatic SLA scans.
124
+ *
125
+ * Defaults to `60000`. Values below `1000` are normalized to `1000` to avoid
126
+ * tight loops in long-running API processes.
127
+ */
128
+ readonly notificationSlaScanIntervalMs?: number;
129
+ /**
130
+ * Enables the SLA timeout `REMIND` action.
131
+ *
132
+ * Defaults to `true`. When disabled, overdue tasks with `REMIND` timeout
133
+ * policy still keep their task state, but the timeout action hook is skipped.
134
+ */
135
+ readonly notificationSlaTimeoutRemindEnabled?: boolean;
136
+ /**
137
+ * Enables the SLA timeout `AUTO_APPROVE` action.
138
+ *
139
+ * Defaults to `false` because this action changes workflow state and should
140
+ * be explicitly enabled by the host application.
141
+ */
142
+ readonly notificationSlaTimeoutAutoApproveEnabled?: boolean;
143
+ /**
144
+ * Enables the SLA timeout `ESCALATE` action.
145
+ *
146
+ * Defaults to `false` because escalation changes task assignment and should
147
+ * be explicitly enabled by the host application.
148
+ */
149
+ readonly notificationSlaTimeoutEscalateEnabled?: boolean;
150
+ /**
151
+ * Enables the SLA timeout `TERMINATE_INSTANCE` action.
152
+ *
153
+ * Defaults to `false` because termination changes instance state and should
154
+ * be explicitly enabled by the host application.
155
+ */
156
+ readonly notificationSlaTimeoutTerminateInstanceEnabled?: boolean;
157
+ /**
158
+ * Template engine used to render notification title and body text.
159
+ *
160
+ * `simple` uses BPM's built-in `{{path}}` replacement renderer. `handlebars`
161
+ * reserves the host configuration for the Handlebars renderer once the email
162
+ * template implementation is wired. Defaults to `simple`.
163
+ */
164
+ readonly notificationTemplateEngine?: NotificationTemplateEngine;
165
+ /**
166
+ * Channels used when a workflow node does not specify notification channels.
167
+ */
168
+ readonly notificationDefaultChannels?: readonly NotificationChannelEnum[];
169
+ /**
170
+ * Default email digest mode for members without a stored preference.
171
+ */
172
+ readonly notificationDefaultEmailDigestMode?: NotificationDigestModeEnum;
173
+ /**
174
+ * Default in-app notification preference for members without a stored
175
+ * preference.
176
+ */
177
+ readonly notificationDefaultInAppPreferenceEnabled?: boolean;
178
+ /**
179
+ * Default email notification preference for members without a stored
180
+ * preference.
181
+ */
182
+ readonly notificationDefaultEmailPreferenceEnabled?: boolean;
183
+ }
184
+ export interface BPMResolvedNotificationOptions {
185
+ readonly emailEnabled: boolean;
186
+ readonly emailFrom: string | null;
187
+ readonly emailSmtpHost: string | null;
188
+ readonly emailSmtpPassword: string | null;
189
+ readonly emailSmtpPort: number | null;
190
+ readonly emailSmtpSecure: boolean;
191
+ readonly emailSmtpUsername: string | null;
192
+ readonly inAppEnabled: boolean;
193
+ readonly defaultChannels: readonly NotificationChannelEnum[];
194
+ readonly defaultEmailDigestMode: NotificationDigestModeEnum;
195
+ readonly defaultEmailPreferenceEnabled: boolean;
196
+ readonly defaultInAppPreferenceEnabled: boolean;
197
+ readonly deliveryBatchSize: number;
198
+ readonly deliveryMaxAttempts: number;
199
+ readonly deliveryRetryBaseDelayMs: number;
200
+ readonly deliveryScanIntervalMs: number;
201
+ readonly deliverySchedulerEnabled: boolean;
202
+ readonly slaScanIntervalMs: number;
203
+ readonly slaSchedulerEnabled: boolean;
204
+ readonly slaTimeoutAutoApproveEnabled: boolean;
205
+ readonly slaTimeoutEscalateEnabled: boolean;
206
+ readonly slaTimeoutRemindEnabled: boolean;
207
+ readonly slaTimeoutTerminateInstanceEnabled: boolean;
208
+ readonly templateEngine: NotificationTemplateEngine;
209
+ readonly webhookEnabled: boolean;
210
+ readonly webhookEndpointUrl: string | null;
211
+ readonly webhookSigningSecret: string | null;
212
+ }
213
+ export declare const BPM_NOTIFICATION_OPTIONS: InjectionToken<BPMResolvedNotificationOptions>;
214
+ export declare const DEFAULT_BPM_NOTIFICATION_OPTIONS: BPMResolvedNotificationOptions;
215
+ export declare function resolveBPMNotificationOptions(options?: BPMRootNotificationOptions): BPMResolvedNotificationOptions;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_BPM_NOTIFICATION_OPTIONS = exports.BPM_NOTIFICATION_OPTIONS = void 0;
4
+ exports.resolveBPMNotificationOptions = resolveBPMNotificationOptions;
5
+ const notification_enums_1 = require("./notification.enums");
6
+ exports.BPM_NOTIFICATION_OPTIONS = Symbol('BPM_NOTIFICATION_OPTIONS');
7
+ exports.DEFAULT_BPM_NOTIFICATION_OPTIONS = {
8
+ emailEnabled: false,
9
+ emailFrom: null,
10
+ emailSmtpHost: null,
11
+ emailSmtpPassword: null,
12
+ emailSmtpPort: null,
13
+ emailSmtpSecure: false,
14
+ emailSmtpUsername: null,
15
+ inAppEnabled: true,
16
+ defaultChannels: [notification_enums_1.NotificationChannelEnum.IN_APP],
17
+ defaultEmailDigestMode: notification_enums_1.NotificationDigestModeEnum.INSTANT,
18
+ defaultEmailPreferenceEnabled: true,
19
+ defaultInAppPreferenceEnabled: true,
20
+ deliveryBatchSize: 25,
21
+ deliveryMaxAttempts: 3,
22
+ deliveryRetryBaseDelayMs: 60_000,
23
+ deliveryScanIntervalMs: 30_000,
24
+ deliverySchedulerEnabled: false,
25
+ slaScanIntervalMs: 60_000,
26
+ slaSchedulerEnabled: false,
27
+ slaTimeoutAutoApproveEnabled: false,
28
+ slaTimeoutEscalateEnabled: false,
29
+ slaTimeoutRemindEnabled: true,
30
+ slaTimeoutTerminateInstanceEnabled: false,
31
+ templateEngine: 'simple',
32
+ webhookEndpointUrl: null,
33
+ webhookEnabled: false,
34
+ webhookSigningSecret: null,
35
+ };
36
+ function resolveBPMNotificationOptions(options = {}) {
37
+ const emailSmtpHost = normalizeText(options.notificationEmailSmtpHost);
38
+ const emailSmtpPort = normalizePort(options.notificationEmailSmtpPort);
39
+ const emailSmtpUsername = normalizeText(options.notificationEmailSmtpUsername);
40
+ const emailSmtpPassword = normalizeText(options.notificationEmailSmtpPassword);
41
+ const emailFrom = normalizeText(options.notificationEmailFrom);
42
+ const webhookSigningSecret = normalizeText(options.notificationWebhookSigningSecret);
43
+ const webhookEndpointUrl = normalizeText(options.notificationWebhookEndpointUrl);
44
+ return {
45
+ deliveryScanIntervalMs: normalizeInterval(options.notificationDeliveryScanIntervalMs, exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.deliveryScanIntervalMs),
46
+ deliveryBatchSize: normalizePositiveInteger(options.notificationDeliveryBatchSize, exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.deliveryBatchSize),
47
+ deliveryMaxAttempts: normalizePositiveInteger(options.notificationDeliveryMaxAttempts, exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.deliveryMaxAttempts),
48
+ deliveryRetryBaseDelayMs: normalizeInterval(options.notificationDeliveryRetryBaseDelayMs, exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.deliveryRetryBaseDelayMs),
49
+ deliverySchedulerEnabled: options.notificationDeliverySchedulerEnabled ??
50
+ exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.deliverySchedulerEnabled,
51
+ emailEnabled: resolveToggle(options.notificationEmailEnabled ?? 'auto', Boolean(emailSmtpHost &&
52
+ emailSmtpPort &&
53
+ emailSmtpUsername &&
54
+ emailSmtpPassword &&
55
+ emailFrom)),
56
+ emailFrom,
57
+ emailSmtpHost,
58
+ emailSmtpPassword,
59
+ emailSmtpPort,
60
+ emailSmtpSecure: options.notificationEmailSmtpSecure ?? false,
61
+ emailSmtpUsername,
62
+ inAppEnabled: options.notificationInAppEnabled ??
63
+ exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.inAppEnabled,
64
+ defaultChannels: normalizeChannels(options.notificationDefaultChannels),
65
+ defaultEmailDigestMode: isNotificationDigestMode(options.notificationDefaultEmailDigestMode)
66
+ ? options.notificationDefaultEmailDigestMode
67
+ : exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.defaultEmailDigestMode,
68
+ defaultEmailPreferenceEnabled: options.notificationDefaultEmailPreferenceEnabled ??
69
+ exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.defaultEmailPreferenceEnabled,
70
+ defaultInAppPreferenceEnabled: options.notificationDefaultInAppPreferenceEnabled ??
71
+ exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.defaultInAppPreferenceEnabled,
72
+ slaScanIntervalMs: normalizeInterval(options.notificationSlaScanIntervalMs, exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.slaScanIntervalMs),
73
+ slaSchedulerEnabled: options.notificationSlaSchedulerEnabled ??
74
+ exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.slaSchedulerEnabled,
75
+ slaTimeoutAutoApproveEnabled: options.notificationSlaTimeoutAutoApproveEnabled ??
76
+ exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.slaTimeoutAutoApproveEnabled,
77
+ slaTimeoutEscalateEnabled: options.notificationSlaTimeoutEscalateEnabled ??
78
+ exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.slaTimeoutEscalateEnabled,
79
+ slaTimeoutRemindEnabled: options.notificationSlaTimeoutRemindEnabled ??
80
+ exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.slaTimeoutRemindEnabled,
81
+ slaTimeoutTerminateInstanceEnabled: options.notificationSlaTimeoutTerminateInstanceEnabled ??
82
+ exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.slaTimeoutTerminateInstanceEnabled,
83
+ templateEngine: options.notificationTemplateEngine ??
84
+ exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.templateEngine,
85
+ webhookEnabled: resolveToggle(options.notificationWebhookEnabled ?? 'auto', Boolean(webhookEndpointUrl && webhookSigningSecret)),
86
+ webhookEndpointUrl,
87
+ webhookSigningSecret,
88
+ };
89
+ }
90
+ function resolveToggle(toggle, autoValue) {
91
+ return toggle === 'auto' ? autoValue : toggle;
92
+ }
93
+ function normalizeText(value) {
94
+ const trimmedValue = value?.trim() ?? '';
95
+ return trimmedValue || null;
96
+ }
97
+ function normalizePort(value) {
98
+ return typeof value === 'number' && Number.isInteger(value) && value > 0
99
+ ? value
100
+ : null;
101
+ }
102
+ function normalizeInterval(value, fallback) {
103
+ if (typeof value !== 'number' || !Number.isInteger(value)) {
104
+ return fallback;
105
+ }
106
+ return Math.max(value, 1000);
107
+ }
108
+ function normalizePositiveInteger(value, fallback) {
109
+ if (typeof value !== 'number' || !Number.isInteger(value) || value <= 0) {
110
+ return fallback;
111
+ }
112
+ return value;
113
+ }
114
+ function normalizeChannels(channels) {
115
+ const normalizedChannels = channels
116
+ ?.filter(isNotificationChannel)
117
+ .filter((channel, index, allChannels) => allChannels.indexOf(channel) === index) ?? [];
118
+ return normalizedChannels.length
119
+ ? normalizedChannels
120
+ : exports.DEFAULT_BPM_NOTIFICATION_OPTIONS.defaultChannels;
121
+ }
122
+ function isNotificationChannel(value) {
123
+ return Object.values(notification_enums_1.NotificationChannelEnum).includes(value);
124
+ }
125
+ function isNotificationDigestMode(value) {
126
+ return Object.values(notification_enums_1.NotificationDigestModeEnum).includes(value);
127
+ }
128
+ //# sourceMappingURL=notification-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-options.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/notification/notification-options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { DynamicModule, InjectionToken } from '@nestjs/common';
2
+ import { ModuleMetadata } from '@nestjs/common/interfaces';
3
+ import { BPMRootNotificationOptions } from './notification-options';
4
+ export interface NotificationOptionsModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
5
+ /**
6
+ * Providers injected into `useFactory`.
7
+ *
8
+ * Host applications usually use this to pass Vault or config services into
9
+ * the flattened notification option factory.
10
+ */
11
+ readonly inject?: readonly InjectionToken[];
12
+ /**
13
+ * Async factory returning flattened notification options.
14
+ *
15
+ * The returned object uses root-level keys such as
16
+ * `notificationEmailSmtpHost` and `notificationWebhookEnabled`.
17
+ */
18
+ readonly useFactory: (...args: readonly unknown[]) => BPMRootNotificationOptions | Promise<BPMRootNotificationOptions>;
19
+ }
20
+ export declare class NotificationOptionsModule {
21
+ static forRoot(options?: BPMRootNotificationOptions): DynamicModule;
22
+ static forRootAsync(options: NotificationOptionsModuleAsyncOptions): DynamicModule;
23
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var NotificationOptionsModule_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.NotificationOptionsModule = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const notification_options_1 = require("./notification-options");
8
+ let NotificationOptionsModule = NotificationOptionsModule_1 = class NotificationOptionsModule {
9
+ static forRoot(options = {}) {
10
+ return {
11
+ exports: [notification_options_1.BPM_NOTIFICATION_OPTIONS],
12
+ module: NotificationOptionsModule_1,
13
+ providers: [
14
+ {
15
+ provide: notification_options_1.BPM_NOTIFICATION_OPTIONS,
16
+ useValue: (0, notification_options_1.resolveBPMNotificationOptions)(options),
17
+ },
18
+ ],
19
+ };
20
+ }
21
+ static forRootAsync(options) {
22
+ return {
23
+ exports: [notification_options_1.BPM_NOTIFICATION_OPTIONS],
24
+ imports: options.imports,
25
+ module: NotificationOptionsModule_1,
26
+ providers: [
27
+ {
28
+ inject: [...(options.inject ?? [])],
29
+ provide: notification_options_1.BPM_NOTIFICATION_OPTIONS,
30
+ useFactory: async (...args) => (0, notification_options_1.resolveBPMNotificationOptions)(await options.useFactory(...args)),
31
+ },
32
+ ],
33
+ };
34
+ }
35
+ };
36
+ exports.NotificationOptionsModule = NotificationOptionsModule;
37
+ exports.NotificationOptionsModule = NotificationOptionsModule = NotificationOptionsModule_1 = tslib_1.__decorate([
38
+ (0, common_1.Global)(),
39
+ (0, common_1.Module)({})
40
+ ], NotificationOptionsModule);
41
+ //# sourceMappingURL=notification-options.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-options.module.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/notification/notification-options.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAA+E;AAE/E,iEAIgC;AA2BzB,IAAM,yBAAyB,iCAA/B,MAAM,yBAAyB;IACpC,MAAM,CAAC,OAAO,CAAC,UAAsC,EAAE;QACrD,OAAO;YACL,OAAO,EAAE,CAAC,+CAAwB,CAAC;YACnC,MAAM,EAAE,2BAAyB;YACjC,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,+CAAwB;oBACjC,QAAQ,EAAE,IAAA,oDAA6B,EAAC,OAAO,CAAC;iBACjD;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CACjB,OAA8C;QAE9C,OAAO;YACL,OAAO,EAAE,CAAC,+CAAwB,CAAC;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,2BAAyB;YACjC,SAAS,EAAE;gBACT;oBACE,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;oBACnC,OAAO,EAAE,+CAAwB;oBACjC,UAAU,EAAE,KAAK,EACf,GAAG,IAAwB,EACgC,EAAE,CAC7D,IAAA,oDAA6B,EAAC,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;iBACnE;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAjCY,8DAAyB;oCAAzB,yBAAyB;IAFrC,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,yBAAyB,CAiCrC"}
@@ -0,0 +1,10 @@
1
+ import { NotificationDigestModeEnum } from './notification.enums';
2
+ export declare class NotificationPreferenceEntity {
3
+ memberId: string;
4
+ inAppEnabled: boolean;
5
+ emailEnabled: boolean;
6
+ emailDigestMode: NotificationDigestModeEnum;
7
+ quietHoursStart: string | null;
8
+ quietHoursEnd: string | null;
9
+ updatedAt: Date;
10
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotificationPreferenceEntity = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const graphql_1 = require("@nestjs/graphql");
6
+ const typeorm_1 = require("typeorm");
7
+ const notification_enums_1 = require("./notification.enums");
8
+ let NotificationPreferenceEntity = class NotificationPreferenceEntity {
9
+ };
10
+ exports.NotificationPreferenceEntity = NotificationPreferenceEntity;
11
+ tslib_1.__decorate([
12
+ (0, typeorm_1.PrimaryColumn)('text', { name: 'member_id' }),
13
+ (0, graphql_1.Field)(),
14
+ tslib_1.__metadata("design:type", String)
15
+ ], NotificationPreferenceEntity.prototype, "memberId", void 0);
16
+ tslib_1.__decorate([
17
+ (0, typeorm_1.Column)('boolean', { name: 'in_app_enabled', default: true }),
18
+ (0, graphql_1.Field)(),
19
+ tslib_1.__metadata("design:type", Boolean)
20
+ ], NotificationPreferenceEntity.prototype, "inAppEnabled", void 0);
21
+ tslib_1.__decorate([
22
+ (0, typeorm_1.Column)('boolean', { name: 'email_enabled', default: true }),
23
+ (0, graphql_1.Field)(),
24
+ tslib_1.__metadata("design:type", Boolean)
25
+ ], NotificationPreferenceEntity.prototype, "emailEnabled", void 0);
26
+ tslib_1.__decorate([
27
+ (0, typeorm_1.Column)('text', { name: 'email_digest_mode' }),
28
+ (0, graphql_1.Field)(() => notification_enums_1.NotificationDigestModeEnum),
29
+ tslib_1.__metadata("design:type", String)
30
+ ], NotificationPreferenceEntity.prototype, "emailDigestMode", void 0);
31
+ tslib_1.__decorate([
32
+ (0, typeorm_1.Column)('time', { name: 'quiet_hours_start', nullable: true }),
33
+ (0, graphql_1.Field)(() => String, { nullable: true }),
34
+ tslib_1.__metadata("design:type", Object)
35
+ ], NotificationPreferenceEntity.prototype, "quietHoursStart", void 0);
36
+ tslib_1.__decorate([
37
+ (0, typeorm_1.Column)('time', { name: 'quiet_hours_end', nullable: true }),
38
+ (0, graphql_1.Field)(() => String, { nullable: true }),
39
+ tslib_1.__metadata("design:type", Object)
40
+ ], NotificationPreferenceEntity.prototype, "quietHoursEnd", void 0);
41
+ tslib_1.__decorate([
42
+ (0, typeorm_1.UpdateDateColumn)({ name: 'updated_at', type: 'timestamptz' }),
43
+ (0, graphql_1.Field)(),
44
+ tslib_1.__metadata("design:type", Date)
45
+ ], NotificationPreferenceEntity.prototype, "updatedAt", void 0);
46
+ exports.NotificationPreferenceEntity = NotificationPreferenceEntity = tslib_1.__decorate([
47
+ (0, typeorm_1.Entity)('notification_preferences'),
48
+ (0, graphql_1.ObjectType)('NotificationPreference')
49
+ ], NotificationPreferenceEntity);
50
+ //# sourceMappingURL=notification-preference.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-preference.entity.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/notification/notification-preference.entity.ts"],"names":[],"mappings":";;;;AAAA,6CAAoD;AACpD,qCAA0E;AAC1E,6DAAkE;AAI3D,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;CA4BxC,CAAA;AA5BY,oEAA4B;AAGvC;IAFC,IAAA,uBAAa,EAAC,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC5C,IAAA,eAAK,GAAE;;8DACU;AAIlB;IAFC,IAAA,gBAAM,EAAC,SAAS,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC5D,IAAA,eAAK,GAAE;;kEACe;AAIvB;IAFC,IAAA,gBAAM,EAAC,SAAS,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3D,IAAA,eAAK,GAAE;;kEACe;AAIvB;IAFC,IAAA,gBAAM,EAAC,MAAM,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC7C,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,+CAA0B,CAAC;;qEACK;AAI7C;IAFC,IAAA,gBAAM,EAAC,MAAM,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7D,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qEACR;AAIhC;IAFC,IAAA,gBAAM,EAAC,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3D,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mEACV;AAI9B;IAFC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IAC7D,IAAA,eAAK,GAAE;sCACI,IAAI;+DAAC;uCA3BN,4BAA4B;IAFxC,IAAA,gBAAM,EAAC,0BAA0B,CAAC;IAClC,IAAA,oBAAU,EAAC,wBAAwB,CAAC;GACxB,4BAA4B,CA4BxC"}
@@ -0,0 +1,13 @@
1
+ import { OnApplicationBootstrap, OnApplicationShutdown } from '@nestjs/common';
2
+ import { BPMResolvedNotificationOptions } from './notification-options';
3
+ import { NotificationService } from './notification.service';
4
+ export declare class NotificationSlaSchedulerService implements OnApplicationBootstrap, OnApplicationShutdown {
5
+ private readonly notificationService;
6
+ private readonly notificationOptions;
7
+ private readonly logger;
8
+ private timer;
9
+ constructor(notificationService: NotificationService, notificationOptions?: BPMResolvedNotificationOptions);
10
+ onApplicationBootstrap(): void;
11
+ onApplicationShutdown(): void;
12
+ private scanSla;
13
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var NotificationSlaSchedulerService_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.NotificationSlaSchedulerService = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const notification_options_1 = require("./notification-options");
8
+ const notification_service_1 = require("./notification.service");
9
+ let NotificationSlaSchedulerService = NotificationSlaSchedulerService_1 = class NotificationSlaSchedulerService {
10
+ constructor(notificationService, notificationOptions = notification_options_1.DEFAULT_BPM_NOTIFICATION_OPTIONS) {
11
+ this.notificationService = notificationService;
12
+ this.notificationOptions = notificationOptions;
13
+ this.logger = new common_1.Logger(NotificationSlaSchedulerService_1.name);
14
+ this.timer = null;
15
+ }
16
+ onApplicationBootstrap() {
17
+ if (process.env.NODE_ENV === 'test' ||
18
+ !this.notificationOptions.slaSchedulerEnabled) {
19
+ return;
20
+ }
21
+ this.timer = setInterval(() => {
22
+ void this.scanSla();
23
+ }, this.notificationOptions.slaScanIntervalMs);
24
+ this.timer.unref();
25
+ }
26
+ onApplicationShutdown() {
27
+ if (this.timer) {
28
+ clearInterval(this.timer);
29
+ this.timer = null;
30
+ }
31
+ }
32
+ async scanSla() {
33
+ try {
34
+ const result = await this.notificationService.runSlaScan();
35
+ if (result.overdueCount || result.warningCount) {
36
+ this.logger.log(`SLA scan created ${result.warningCount} warning and ${result.overdueCount} overdue notifications`);
37
+ }
38
+ }
39
+ catch (error) {
40
+ this.logger.error(error instanceof Error ? error.message : 'SLA scan failed');
41
+ }
42
+ }
43
+ };
44
+ exports.NotificationSlaSchedulerService = NotificationSlaSchedulerService;
45
+ exports.NotificationSlaSchedulerService = NotificationSlaSchedulerService = NotificationSlaSchedulerService_1 = tslib_1.__decorate([
46
+ (0, common_1.Injectable)(),
47
+ tslib_1.__param(1, (0, common_1.Optional)()),
48
+ tslib_1.__param(1, (0, common_1.Inject)(notification_options_1.BPM_NOTIFICATION_OPTIONS)),
49
+ tslib_1.__metadata("design:paramtypes", [notification_service_1.NotificationService, Object])
50
+ ], NotificationSlaSchedulerService);
51
+ //# sourceMappingURL=notification-sla-scheduler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-sla-scheduler.service.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/notification/notification-sla-scheduler.service.ts"],"names":[],"mappings":";;;;;AAAA,2CAOwB;AACxB,iEAIgC;AAChC,iEAA6D;AAGtD,IAAM,+BAA+B,uCAArC,MAAM,+BAA+B;IAM1C,YACmB,mBAAwC,EAGzD,sBAAuE,uDAAgC;QAHtF,wBAAmB,GAAnB,mBAAmB,CAAqB;QAGxC,wBAAmB,GAAnB,mBAAmB,CAAmE;QAPxF,WAAM,GAAG,IAAI,eAAM,CAAC,iCAA+B,CAAC,IAAI,CAAC,CAAC;QACnE,UAAK,GAA0B,IAAI,CAAC;IAOzC,CAAC;IAEJ,sBAAsB;QACpB,IACE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;YAC/B,CAAC,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAC7C,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAS,EAAE;YAClC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,qBAAqB;QACnB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC;YAE3D,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,oBAAoB,MAAM,CAAC,YAAY,gBAAgB,MAAM,CAAC,YAAY,wBAAwB,CACnG,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAC3D,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAjDY,0EAA+B;0CAA/B,+BAA+B;IAD3C,IAAA,mBAAU,GAAE;IASR,mBAAA,IAAA,iBAAQ,GAAE,CAAA;IACV,mBAAA,IAAA,eAAM,EAAC,+CAAwB,CAAC,CAAA;6CAFK,0CAAmB;GAPhD,+BAA+B,CAiD3C"}
@@ -0,0 +1,13 @@
1
+ import { NotificationTypeEnum } from './notification.enums';
2
+ import { NotificationTemplateEngine } from './notification-options';
3
+ interface NotificationTemplate {
4
+ readonly body: string;
5
+ readonly title: string;
6
+ }
7
+ export declare function renderNotificationTemplate({ customTemplate, engine, payload, type, }: {
8
+ readonly customTemplate?: string | null;
9
+ readonly engine?: NotificationTemplateEngine;
10
+ readonly payload: Readonly<Record<string, unknown>>;
11
+ readonly type: NotificationTypeEnum;
12
+ }): NotificationTemplate;
13
+ export {};
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderNotificationTemplate = renderNotificationTemplate;
4
+ const Handlebars = require("handlebars");
5
+ const notification_enums_1 = require("./notification.enums");
6
+ const TEMPLATES = {
7
+ [notification_enums_1.NotificationTypeEnum.INSTANCE_COMPLETED]: {
8
+ body: '案件 {{instanceTitle}} 已完成。',
9
+ title: '案件已完成',
10
+ },
11
+ [notification_enums_1.NotificationTypeEnum.SLA_OVERDUE]: {
12
+ body: '{{nodeLabel}} 已於 {{slaDueAt}} 逾時,處理者:{{assigneeMemberId}}。',
13
+ title: 'SLA 已逾時',
14
+ },
15
+ [notification_enums_1.NotificationTypeEnum.SLA_WARNING]: {
16
+ body: '{{nodeLabel}} 將於 {{slaDueAt}} 到期,請儘快處理。',
17
+ title: 'SLA 即將到期',
18
+ },
19
+ [notification_enums_1.NotificationTypeEnum.TASK_ASSIGNED]: {
20
+ body: '案件 {{instanceTitle}} 的 {{nodeLabel}} 已指派給你。',
21
+ title: '新的待簽任務',
22
+ },
23
+ [notification_enums_1.NotificationTypeEnum.TASK_TRANSFERRED]: {
24
+ body: '案件 {{instanceTitle}} 的 {{nodeLabel}} 已轉派給你。',
25
+ title: '新的轉派任務',
26
+ },
27
+ [notification_enums_1.NotificationTypeEnum.WORKFLOW_NOTIFICATION]: {
28
+ body: '{{message}}',
29
+ title: '{{nodeLabel}}',
30
+ },
31
+ };
32
+ function renderNotificationTemplate({ customTemplate, engine = 'simple', payload, type, }) {
33
+ const template = TEMPLATES[type];
34
+ const bodyTemplate = customTemplate?.trim() || template.body;
35
+ return {
36
+ body: renderTemplate(bodyTemplate, payload, engine),
37
+ title: renderTemplate(template.title, payload, engine),
38
+ };
39
+ }
40
+ function renderTemplate(template, payload, engine) {
41
+ if (engine === 'handlebars') {
42
+ return Handlebars.compile(template, {
43
+ noEscape: true,
44
+ strict: false,
45
+ })(payload);
46
+ }
47
+ return template.replace(/\{\{\s*([A-Za-z0-9_.]+)\s*\}\}/gu, (_match, key) => readPayloadValue(payload, key));
48
+ }
49
+ function readPayloadValue(payload, path) {
50
+ const value = path
51
+ .split('.')
52
+ .reduce((currentValue, key) => isRecord(currentValue) ? currentValue[key] : undefined, payload);
53
+ if (value === null || typeof value === 'undefined') {
54
+ return '';
55
+ }
56
+ return String(value);
57
+ }
58
+ function isRecord(value) {
59
+ return typeof value === 'object' && value !== null;
60
+ }
61
+ //# sourceMappingURL=notification-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-template.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/notification/notification-template.ts"],"names":[],"mappings":";;AAqCA,gEAkBC;AAvDD,yCAAyC;AACzC,6DAA4D;AAQ5D,MAAM,SAAS,GACb;IACE,CAAC,yCAAoB,CAAC,kBAAkB,CAAC,EAAE;QACzC,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,OAAO;KACf;IACD,CAAC,yCAAoB,CAAC,WAAW,CAAC,EAAE;QAClC,IAAI,EAAE,4DAA4D;QAClE,KAAK,EAAE,SAAS;KACjB;IACD,CAAC,yCAAoB,CAAC,WAAW,CAAC,EAAE;QAClC,IAAI,EAAE,yCAAyC;QAC/C,KAAK,EAAE,UAAU;KAClB;IACD,CAAC,yCAAoB,CAAC,aAAa,CAAC,EAAE;QACpC,IAAI,EAAE,6CAA6C;QACnD,KAAK,EAAE,QAAQ;KAChB;IACD,CAAC,yCAAoB,CAAC,gBAAgB,CAAC,EAAE;QACvC,IAAI,EAAE,6CAA6C;QACnD,KAAK,EAAE,QAAQ;KAChB;IACD,CAAC,yCAAoB,CAAC,qBAAqB,CAAC,EAAE;QAC5C,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,eAAe;KACvB;CACF,CAAC;AAEJ,SAAgB,0BAA0B,CAAC,EACzC,cAAc,EACd,MAAM,GAAG,QAAQ,EACjB,OAAO,EACP,IAAI,GAML;IACC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,YAAY,GAAG,cAAc,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC;IAE7D,OAAO;QACL,IAAI,EAAE,cAAc,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC;QACnD,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,QAAgB,EAChB,OAA0C,EAC1C,MAAkC;IAElC,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE;YAClC,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,KAAK;SACd,CAAC,CAAC,OAAO,CAAC,CAAC;IACd,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CACrB,kCAAkC,EAClC,CAAC,MAAM,EAAE,GAAW,EAAU,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAChE,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,OAA0C,EAC1C,IAAY;IAEZ,MAAM,KAAK,GAAG,IAAI;SACf,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CACL,CAAC,YAAY,EAAE,GAAG,EAAE,EAAE,CACpB,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,EACxD,OAAO,CACR,CAAC;IAEJ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;QACnD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC"}