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

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 (610) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/eslint.config.mjs +20 -0
  3. package/jest.config.cts +15 -0
  4. package/package.json +3 -3
  5. package/project.json +58 -0
  6. package/src/lib/attachment/attachment-options.spec.ts +45 -0
  7. package/src/lib/attachment/attachment-options.ts +130 -0
  8. package/src/lib/attachment/attachment-storage.provider.spec.ts +79 -0
  9. package/src/lib/attachment/attachment-storage.provider.ts +60 -0
  10. package/src/lib/attachment/{attachment-storage.token.d.ts → attachment-storage.token.ts} +3 -1
  11. package/src/lib/attachment/attachment.controller.ts +39 -0
  12. package/src/lib/attachment/attachment.entity.ts +59 -0
  13. package/src/lib/attachment/attachment.module.ts +149 -0
  14. package/src/lib/attachment/attachment.mutations.ts +22 -0
  15. package/src/lib/attachment/attachment.queries.ts +65 -0
  16. package/src/lib/attachment/attachment.service.spec.ts +319 -0
  17. package/src/lib/attachment/attachment.service.ts +477 -0
  18. package/src/lib/attachment/dto/upload-attachment.input.ts +60 -0
  19. package/src/lib/bpm/bpm-root.module.spec.ts +138 -0
  20. package/src/lib/bpm/bpm-root.module.ts +320 -0
  21. package/src/lib/bpm-auth/bpm-auth-context.extractor.ts +106 -0
  22. package/src/lib/bpm-auth/bpm-auth-context.ts +40 -0
  23. package/src/lib/bpm-auth/bpm-auth.authorization.ts +80 -0
  24. package/src/lib/bpm-auth/bpm-auth.decorators.ts +19 -0
  25. package/src/lib/bpm-auth/bpm-auth.guard.ts +31 -0
  26. package/src/lib/bpm-auth/bpm-auth.module.spec.ts +106 -0
  27. package/src/lib/bpm-auth/bpm-auth.module.ts +69 -0
  28. package/src/lib/bpm-auth/bpm-auth.options.ts +21 -0
  29. package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.ts +55 -0
  30. package/src/lib/common/filters/all-exceptions.filter.ts +138 -0
  31. package/src/lib/common/iso-duration.ts +31 -0
  32. package/src/lib/condition/condition.module.ts +8 -0
  33. package/src/lib/condition/condition.service.spec.ts +50 -0
  34. package/src/lib/condition/condition.service.ts +141 -0
  35. package/src/lib/database/data-source.ts +7 -0
  36. package/src/lib/database/migration-runner.ts +24 -0
  37. package/src/lib/database/typeorm.config.ts +217 -0
  38. package/src/lib/delegation/delegation-rule.entity.ts +84 -0
  39. package/src/lib/delegation/delegation.enums.ts +21 -0
  40. package/src/lib/delegation/delegation.module.ts +14 -0
  41. package/src/lib/delegation/delegation.mutations.ts +92 -0
  42. package/src/lib/delegation/delegation.queries.ts +111 -0
  43. package/src/lib/delegation/delegation.service.spec.ts +295 -0
  44. package/src/lib/delegation/delegation.service.ts +482 -0
  45. package/src/lib/delegation/dto/delegation-rule.input.ts +125 -0
  46. package/src/lib/form/dto/form-definition.input.ts +73 -0
  47. package/src/lib/form/form-definition-version.entity.ts +66 -0
  48. package/src/lib/form/form-definition.entity.ts +54 -0
  49. package/src/lib/form/form-schema-lint.object.ts +10 -0
  50. package/src/lib/form/form-schema.validator.spec.ts +180 -0
  51. package/src/lib/form/form-schema.validator.ts +538 -0
  52. package/src/lib/form/form.enums.ts +20 -0
  53. package/src/lib/form/form.module.ts +19 -0
  54. package/src/lib/form/form.mutations.ts +68 -0
  55. package/src/lib/form/form.queries.ts +72 -0
  56. package/src/lib/form/form.service.spec.ts +144 -0
  57. package/src/lib/form/form.service.ts +490 -0
  58. package/src/lib/identity/identity-options.ts +41 -0
  59. package/src/lib/identity/identity.module.ts +96 -0
  60. package/src/lib/identity/identity.queries.ts +61 -0
  61. package/src/lib/identity/identity.service.spec.ts +105 -0
  62. package/src/lib/identity/identity.service.ts +200 -0
  63. package/src/lib/identity/member-base.adapter.spec.ts +77 -0
  64. package/src/lib/identity/member-base.adapter.ts +244 -0
  65. package/src/lib/identity/member-metadata-cache.entity.ts +27 -0
  66. package/src/lib/identity/member-profile.object.ts +28 -0
  67. package/src/lib/identity/{member-resolver.interface.d.ts → member-resolver.interface.ts} +11 -5
  68. package/src/lib/migrations/0000000000001-enable-postgres-extensions.ts +14 -0
  69. package/src/lib/migrations/{0000000001000-identity-organization-foundation.js → 0000000001000-identity-organization-foundation.ts} +38 -29
  70. package/src/lib/migrations/{0000000002000-form-builder-foundation.js → 0000000002000-form-builder-foundation.ts} +22 -21
  71. package/src/lib/migrations/{0000000003000-approval-template-foundation.js → 0000000003000-approval-template-foundation.ts} +24 -21
  72. package/src/lib/migrations/{0000000004000-workflow-engine-foundation.js → 0000000004000-workflow-engine-foundation.ts} +46 -34
  73. package/src/lib/migrations/{0000000005000-delegation-rules.js → 0000000005000-delegation-rules.ts} +20 -19
  74. package/src/lib/migrations/{0000000006000-notifications-sla.js → 0000000006000-notifications-sla.ts} +26 -23
  75. package/src/lib/migrations/{0000000007000-signatures-attachments.js → 0000000007000-signatures-attachments.ts} +28 -27
  76. package/src/lib/migrations/{0000000008000-approval-template-categories.js → 0000000008000-approval-template-categories.ts} +28 -25
  77. package/src/lib/migrations/{0000000009000-task-candidates.js → 0000000009000-task-candidates.ts} +26 -23
  78. package/src/lib/migrations/{0000000010000-notification-delivery-state.js → 0000000010000-notification-delivery-state.ts} +16 -17
  79. package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.ts +19 -0
  80. package/src/lib/migrations/0000000012000-notification-sla-idempotency.ts +22 -0
  81. package/src/lib/migrations/0000000013000-workflow-query-indexes.ts +113 -0
  82. package/src/lib/migrations/index.ts +47 -0
  83. package/src/lib/notification/dto/notification-preference.input.ts +46 -0
  84. package/src/lib/notification/notification-delivery-scheduler.service.ts +69 -0
  85. package/src/lib/notification/notification-delivery.service.spec.ts +315 -0
  86. package/src/lib/notification/notification-delivery.service.ts +339 -0
  87. package/src/lib/notification/notification-dispatcher.token.ts +13 -0
  88. package/src/lib/notification/notification-options.module.ts +67 -0
  89. package/src/lib/notification/notification-options.spec.ts +93 -0
  90. package/src/lib/notification/notification-options.ts +452 -0
  91. package/src/lib/notification/notification-preference.entity.ts +35 -0
  92. package/src/lib/notification/notification-sla-scheduler.service.ts +66 -0
  93. package/src/lib/notification/notification-template.spec.ts +33 -0
  94. package/src/lib/notification/notification-template.ts +97 -0
  95. package/src/lib/notification/notification.entity.ts +102 -0
  96. package/src/lib/notification/notification.enums.ts +45 -0
  97. package/src/lib/notification/notification.module.ts +37 -0
  98. package/src/lib/notification/notification.mutations.ts +47 -0
  99. package/src/lib/notification/notification.queries.ts +64 -0
  100. package/src/lib/notification/notification.service.spec.ts +412 -0
  101. package/src/lib/notification/notification.service.ts +974 -0
  102. package/src/lib/organization/dto/manager-resolution.input.ts +91 -0
  103. package/src/lib/organization/dto/membership.input.ts +77 -0
  104. package/src/lib/organization/dto/org-unit.input.ts +96 -0
  105. package/src/lib/organization/dto/position.input.ts +50 -0
  106. package/src/lib/organization/json-metadata.ts +15 -0
  107. package/src/lib/organization/manager-resolution.entity.ts +44 -0
  108. package/src/lib/organization/membership.entity.ts +50 -0
  109. package/src/lib/organization/org-unit-tree-commit-result.object.ts +8 -0
  110. package/src/lib/organization/org-unit.entity.ts +53 -0
  111. package/src/lib/organization/organization-summary.object.ts +16 -0
  112. package/src/lib/organization/organization.enums.ts +19 -0
  113. package/src/lib/organization/organization.module.ts +27 -0
  114. package/src/lib/organization/organization.mutations.ts +115 -0
  115. package/src/lib/organization/organization.queries.ts +188 -0
  116. package/src/lib/organization/organization.service.spec.ts +760 -0
  117. package/src/lib/organization/organization.service.ts +1216 -0
  118. package/src/lib/organization/position.entity.ts +39 -0
  119. package/src/lib/organization/resolved-manager.object.ts +10 -0
  120. package/src/lib/signature/signature-options.spec.ts +60 -0
  121. package/src/lib/signature/signature-options.ts +120 -0
  122. package/src/lib/signature/signature-verification.object.ts +16 -0
  123. package/src/lib/signature/signature.entity.ts +62 -0
  124. package/src/lib/signature/signature.module.ts +80 -0
  125. package/src/lib/signature/signature.queries.ts +37 -0
  126. package/src/lib/signature/signature.service.spec.ts +134 -0
  127. package/src/lib/signature/signature.service.ts +205 -0
  128. package/src/lib/template/approval-template-category.entity.ts +40 -0
  129. package/src/lib/template/approval-template-version.entity.ts +82 -0
  130. package/src/lib/template/approval-template.entity.ts +64 -0
  131. package/src/lib/template/dto/approval-template.input.ts +147 -0
  132. package/src/lib/template/template.enums.ts +30 -0
  133. package/src/lib/template/template.module.ts +25 -0
  134. package/src/lib/template/template.mutations.ts +106 -0
  135. package/src/lib/template/template.queries.ts +119 -0
  136. package/src/lib/template/template.service.spec.ts +476 -0
  137. package/src/lib/template/template.service.ts +820 -0
  138. package/src/lib/template/workflow-definition.validator.spec.ts +595 -0
  139. package/src/lib/template/workflow-definition.validator.ts +539 -0
  140. package/src/lib/testing/cel-js.jest.ts +46 -0
  141. package/src/lib/workflow-engine/activity-log.entity.ts +48 -0
  142. package/src/lib/workflow-engine/approval-instance-page-info.object.ts +22 -0
  143. package/src/lib/workflow-engine/approval-instance.entity.ts +86 -0
  144. package/src/lib/workflow-engine/dto/cancel-approval-instance.input.ts +18 -0
  145. package/src/lib/workflow-engine/dto/decide-task.input.ts +33 -0
  146. package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.ts +22 -0
  147. package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.ts +22 -0
  148. package/src/lib/workflow-engine/dto/submit-approval-instance.input.ts +27 -0
  149. package/src/lib/workflow-engine/task-candidate.entity.ts +56 -0
  150. package/src/lib/workflow-engine/task-decision.entity.ts +43 -0
  151. package/src/lib/workflow-engine/task.entity.ts +85 -0
  152. package/src/lib/workflow-engine/workflow-condition-evaluator.ts +168 -0
  153. package/src/lib/workflow-engine/workflow-dashboard-summary.object.ts +22 -0
  154. package/src/lib/workflow-engine/workflow-dry-run.object.ts +58 -0
  155. package/src/lib/workflow-engine/workflow-engine.enums.ts +99 -0
  156. package/src/lib/workflow-engine/workflow-engine.module.ts +75 -0
  157. package/src/lib/workflow-engine/workflow-engine.mutations.ts +85 -0
  158. package/src/lib/workflow-engine/workflow-engine.queries.ts +229 -0
  159. package/src/lib/workflow-engine/workflow-engine.service.spec.ts +2689 -0
  160. package/src/lib/workflow-engine/workflow-engine.service.ts +4707 -0
  161. package/src/lib/workflow-engine/{workflow-engine.tokens.d.ts → workflow-engine.tokens.ts} +9 -3
  162. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.ts +69 -0
  163. package/src/lib/workflow-engine/workflow-token.entity.ts +40 -0
  164. package/tsconfig.json +24 -0
  165. package/tsconfig.lib.json +16 -0
  166. package/tsconfig.spec.json +16 -0
  167. package/LICENSE +0 -21
  168. package/src/index.js +0 -18
  169. package/src/index.js.map +0 -1
  170. package/src/lib/attachment/attachment-options.d.ts +0 -44
  171. package/src/lib/attachment/attachment-options.js +0 -62
  172. package/src/lib/attachment/attachment-options.js.map +0 -1
  173. package/src/lib/attachment/attachment-storage.provider.d.ts +0 -4
  174. package/src/lib/attachment/attachment-storage.provider.js +0 -35
  175. package/src/lib/attachment/attachment-storage.provider.js.map +0 -1
  176. package/src/lib/attachment/attachment-storage.token.js +0 -5
  177. package/src/lib/attachment/attachment-storage.token.js.map +0 -1
  178. package/src/lib/attachment/attachment.controller.d.ts +0 -8
  179. package/src/lib/attachment/attachment.controller.js +0 -38
  180. package/src/lib/attachment/attachment.controller.js.map +0 -1
  181. package/src/lib/attachment/attachment.entity.d.ts +0 -14
  182. package/src/lib/attachment/attachment.entity.js +0 -74
  183. package/src/lib/attachment/attachment.entity.js.map +0 -1
  184. package/src/lib/attachment/attachment.module.d.ts +0 -27
  185. package/src/lib/attachment/attachment.module.js +0 -103
  186. package/src/lib/attachment/attachment.module.js.map +0 -1
  187. package/src/lib/attachment/attachment.mutations.d.ts +0 -8
  188. package/src/lib/attachment/attachment.mutations.js +0 -35
  189. package/src/lib/attachment/attachment.mutations.js.map +0 -1
  190. package/src/lib/attachment/attachment.queries.d.ts +0 -9
  191. package/src/lib/attachment/attachment.queries.js +0 -78
  192. package/src/lib/attachment/attachment.queries.js.map +0 -1
  193. package/src/lib/attachment/attachment.service.d.ts +0 -49
  194. package/src/lib/attachment/attachment.service.js +0 -276
  195. package/src/lib/attachment/attachment.service.js.map +0 -1
  196. package/src/lib/attachment/dto/upload-attachment.input.d.ts +0 -11
  197. package/src/lib/attachment/dto/upload-attachment.input.js +0 -68
  198. package/src/lib/attachment/dto/upload-attachment.input.js.map +0 -1
  199. package/src/lib/attachment/index.js +0 -9
  200. package/src/lib/attachment/index.js.map +0 -1
  201. package/src/lib/bpm/bpm-root.module.d.ts +0 -155
  202. package/src/lib/bpm/bpm-root.module.js +0 -170
  203. package/src/lib/bpm/bpm-root.module.js.map +0 -1
  204. package/src/lib/bpm/index.js +0 -5
  205. package/src/lib/bpm/index.js.map +0 -1
  206. package/src/lib/bpm-auth/bpm-auth-context.d.ts +0 -24
  207. package/src/lib/bpm-auth/bpm-auth-context.extractor.d.ts +0 -4
  208. package/src/lib/bpm-auth/bpm-auth-context.extractor.js +0 -69
  209. package/src/lib/bpm-auth/bpm-auth-context.extractor.js.map +0 -1
  210. package/src/lib/bpm-auth/bpm-auth-context.js +0 -15
  211. package/src/lib/bpm-auth/bpm-auth-context.js.map +0 -1
  212. package/src/lib/bpm-auth/bpm-auth.authorization.d.ts +0 -12
  213. package/src/lib/bpm-auth/bpm-auth.authorization.js +0 -67
  214. package/src/lib/bpm-auth/bpm-auth.authorization.js.map +0 -1
  215. package/src/lib/bpm-auth/bpm-auth.decorators.d.ts +0 -3
  216. package/src/lib/bpm-auth/bpm-auth.decorators.js +0 -11
  217. package/src/lib/bpm-auth/bpm-auth.decorators.js.map +0 -1
  218. package/src/lib/bpm-auth/bpm-auth.guard.d.ts +0 -7
  219. package/src/lib/bpm-auth/bpm-auth.guard.js +0 -24
  220. package/src/lib/bpm-auth/bpm-auth.guard.js.map +0 -1
  221. package/src/lib/bpm-auth/bpm-auth.module.d.ts +0 -6
  222. package/src/lib/bpm-auth/bpm-auth.module.js +0 -69
  223. package/src/lib/bpm-auth/bpm-auth.module.js.map +0 -1
  224. package/src/lib/bpm-auth/bpm-auth.options.d.ts +0 -11
  225. package/src/lib/bpm-auth/bpm-auth.options.js +0 -3
  226. package/src/lib/bpm-auth/bpm-auth.options.js.map +0 -1
  227. package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.d.ts +0 -10
  228. package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.js +0 -40
  229. package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.js.map +0 -1
  230. package/src/lib/bpm-auth/index.js +0 -10
  231. package/src/lib/bpm-auth/index.js.map +0 -1
  232. package/src/lib/common/filters/all-exceptions.filter.d.ts +0 -25
  233. package/src/lib/common/filters/all-exceptions.filter.js +0 -93
  234. package/src/lib/common/filters/all-exceptions.filter.js.map +0 -1
  235. package/src/lib/common/index.js +0 -5
  236. package/src/lib/common/index.js.map +0 -1
  237. package/src/lib/common/iso-duration.d.ts +0 -1
  238. package/src/lib/common/iso-duration.js +0 -27
  239. package/src/lib/common/iso-duration.js.map +0 -1
  240. package/src/lib/condition/condition.module.d.ts +0 -2
  241. package/src/lib/condition/condition.module.js +0 -16
  242. package/src/lib/condition/condition.module.js.map +0 -1
  243. package/src/lib/condition/condition.service.d.ts +0 -16
  244. package/src/lib/condition/condition.service.js +0 -82
  245. package/src/lib/condition/condition.service.js.map +0 -1
  246. package/src/lib/condition/index.js +0 -6
  247. package/src/lib/condition/index.js.map +0 -1
  248. package/src/lib/database/data-source.d.ts +0 -4
  249. package/src/lib/database/data-source.js +0 -7
  250. package/src/lib/database/data-source.js.map +0 -1
  251. package/src/lib/database/index.js +0 -6
  252. package/src/lib/database/index.js.map +0 -1
  253. package/src/lib/database/migration-runner.d.ts +0 -1
  254. package/src/lib/database/migration-runner.js +0 -23
  255. package/src/lib/database/migration-runner.js.map +0 -1
  256. package/src/lib/database/typeorm.config.d.ts +0 -14
  257. package/src/lib/database/typeorm.config.js +0 -135
  258. package/src/lib/database/typeorm.config.js.map +0 -1
  259. package/src/lib/delegation/delegation-rule.entity.d.ts +0 -19
  260. package/src/lib/delegation/delegation-rule.entity.js +0 -99
  261. package/src/lib/delegation/delegation-rule.entity.js.map +0 -1
  262. package/src/lib/delegation/delegation.enums.d.ts +0 -10
  263. package/src/lib/delegation/delegation.enums.js +0 -23
  264. package/src/lib/delegation/delegation.enums.js.map +0 -1
  265. package/src/lib/delegation/delegation.module.d.ts +0 -2
  266. package/src/lib/delegation/delegation.module.js +0 -22
  267. package/src/lib/delegation/delegation.module.js.map +0 -1
  268. package/src/lib/delegation/delegation.mutations.d.ts +0 -11
  269. package/src/lib/delegation/delegation.mutations.js +0 -87
  270. package/src/lib/delegation/delegation.mutations.js.map +0 -1
  271. package/src/lib/delegation/delegation.queries.d.ts +0 -10
  272. package/src/lib/delegation/delegation.queries.js +0 -91
  273. package/src/lib/delegation/delegation.queries.js.map +0 -1
  274. package/src/lib/delegation/delegation.service.d.ts +0 -56
  275. package/src/lib/delegation/delegation.service.js +0 -268
  276. package/src/lib/delegation/delegation.service.js.map +0 -1
  277. package/src/lib/delegation/dto/delegation-rule.input.d.ts +0 -24
  278. package/src/lib/delegation/dto/delegation-rule.input.js +0 -143
  279. package/src/lib/delegation/dto/delegation-rule.input.js.map +0 -1
  280. package/src/lib/delegation/index.js +0 -9
  281. package/src/lib/delegation/index.js.map +0 -1
  282. package/src/lib/form/dto/form-definition.input.d.ts +0 -21
  283. package/src/lib/form/dto/form-definition.input.js +0 -103
  284. package/src/lib/form/dto/form-definition.input.js.map +0 -1
  285. package/src/lib/form/form-definition-version.entity.d.ts +0 -17
  286. package/src/lib/form/form-definition-version.entity.js +0 -84
  287. package/src/lib/form/form-definition-version.entity.js.map +0 -1
  288. package/src/lib/form/form-definition.entity.d.ts +0 -13
  289. package/src/lib/form/form-definition.entity.js +0 -66
  290. package/src/lib/form/form-definition.entity.js.map +0 -1
  291. package/src/lib/form/form-schema-lint.object.d.ts +0 -4
  292. package/src/lib/form/form-schema-lint.object.js +0 -20
  293. package/src/lib/form/form-schema-lint.object.js.map +0 -1
  294. package/src/lib/form/form-schema.validator.d.ts +0 -13
  295. package/src/lib/form/form-schema.validator.js +0 -354
  296. package/src/lib/form/form-schema.validator.js.map +0 -1
  297. package/src/lib/form/form.enums.d.ts +0 -9
  298. package/src/lib/form/form.enums.js +0 -22
  299. package/src/lib/form/form.enums.js.map +0 -1
  300. package/src/lib/form/form.module.d.ts +0 -2
  301. package/src/lib/form/form.module.js +0 -27
  302. package/src/lib/form/form.module.js.map +0 -1
  303. package/src/lib/form/form.mutations.d.ts +0 -14
  304. package/src/lib/form/form.mutations.js +0 -88
  305. package/src/lib/form/form.mutations.js.map +0 -1
  306. package/src/lib/form/form.queries.d.ts +0 -16
  307. package/src/lib/form/form.queries.js +0 -96
  308. package/src/lib/form/form.queries.js.map +0 -1
  309. package/src/lib/form/form.service.d.ts +0 -35
  310. package/src/lib/form/form.service.js +0 -297
  311. package/src/lib/form/form.service.js.map +0 -1
  312. package/src/lib/form/index.js +0 -12
  313. package/src/lib/form/index.js.map +0 -1
  314. package/src/lib/identity/identity-options.d.ts +0 -13
  315. package/src/lib/identity/identity-options.js +0 -20
  316. package/src/lib/identity/identity-options.js.map +0 -1
  317. package/src/lib/identity/identity.module.d.ts +0 -17
  318. package/src/lib/identity/identity.module.js +0 -65
  319. package/src/lib/identity/identity.module.js.map +0 -1
  320. package/src/lib/identity/identity.queries.d.ts +0 -12
  321. package/src/lib/identity/identity.queries.js +0 -79
  322. package/src/lib/identity/identity.queries.js.map +0 -1
  323. package/src/lib/identity/identity.service.d.ts +0 -22
  324. package/src/lib/identity/identity.service.js +0 -141
  325. package/src/lib/identity/identity.service.js.map +0 -1
  326. package/src/lib/identity/index.js +0 -7
  327. package/src/lib/identity/index.js.map +0 -1
  328. package/src/lib/identity/member-base.adapter.d.ts +0 -95
  329. package/src/lib/identity/member-base.adapter.js +0 -137
  330. package/src/lib/identity/member-base.adapter.js.map +0 -1
  331. package/src/lib/identity/member-metadata-cache.entity.d.ts +0 -8
  332. package/src/lib/identity/member-metadata-cache.entity.js +0 -39
  333. package/src/lib/identity/member-metadata-cache.entity.js.map +0 -1
  334. package/src/lib/identity/member-profile.object.d.ts +0 -8
  335. package/src/lib/identity/member-profile.object.js +0 -37
  336. package/src/lib/identity/member-profile.object.js.map +0 -1
  337. package/src/lib/identity/member-resolver.interface.js +0 -19
  338. package/src/lib/identity/member-resolver.interface.js.map +0 -1
  339. package/src/lib/migrations/0000000000000-enable-postgres-extensions.d.ts +0 -6
  340. package/src/lib/migrations/0000000000000-enable-postgres-extensions.js +0 -17
  341. package/src/lib/migrations/0000000000000-enable-postgres-extensions.js.map +0 -1
  342. package/src/lib/migrations/0000000001000-identity-organization-foundation.d.ts +0 -6
  343. package/src/lib/migrations/0000000001000-identity-organization-foundation.js.map +0 -1
  344. package/src/lib/migrations/0000000002000-form-builder-foundation.d.ts +0 -6
  345. package/src/lib/migrations/0000000002000-form-builder-foundation.js.map +0 -1
  346. package/src/lib/migrations/0000000003000-approval-template-foundation.d.ts +0 -6
  347. package/src/lib/migrations/0000000003000-approval-template-foundation.js.map +0 -1
  348. package/src/lib/migrations/0000000004000-workflow-engine-foundation.d.ts +0 -6
  349. package/src/lib/migrations/0000000004000-workflow-engine-foundation.js.map +0 -1
  350. package/src/lib/migrations/0000000005000-delegation-rules.d.ts +0 -6
  351. package/src/lib/migrations/0000000005000-delegation-rules.js.map +0 -1
  352. package/src/lib/migrations/0000000006000-notifications-sla.d.ts +0 -6
  353. package/src/lib/migrations/0000000006000-notifications-sla.js.map +0 -1
  354. package/src/lib/migrations/0000000007000-signatures-attachments.d.ts +0 -6
  355. package/src/lib/migrations/0000000007000-signatures-attachments.js.map +0 -1
  356. package/src/lib/migrations/0000000008000-approval-template-categories.d.ts +0 -6
  357. package/src/lib/migrations/0000000008000-approval-template-categories.js.map +0 -1
  358. package/src/lib/migrations/0000000009000-task-candidates.d.ts +0 -6
  359. package/src/lib/migrations/0000000009000-task-candidates.js.map +0 -1
  360. package/src/lib/migrations/0000000010000-notification-delivery-state.d.ts +0 -6
  361. package/src/lib/migrations/0000000010000-notification-delivery-state.js.map +0 -1
  362. package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.d.ts +0 -6
  363. package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.js +0 -22
  364. package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.js.map +0 -1
  365. package/src/lib/migrations/0000000012000-notification-sla-idempotency.d.ts +0 -6
  366. package/src/lib/migrations/0000000012000-notification-sla-idempotency.js +0 -21
  367. package/src/lib/migrations/0000000012000-notification-sla-idempotency.js.map +0 -1
  368. package/src/lib/migrations/0000000013000-workflow-query-indexes.d.ts +0 -6
  369. package/src/lib/migrations/0000000013000-workflow-query-indexes.js +0 -80
  370. package/src/lib/migrations/0000000013000-workflow-query-indexes.js.map +0 -1
  371. package/src/lib/migrations/index.d.ts +0 -16
  372. package/src/lib/migrations/index.js +0 -49
  373. package/src/lib/migrations/index.js.map +0 -1
  374. package/src/lib/notification/dto/notification-preference.input.d.ts +0 -9
  375. package/src/lib/notification/dto/notification-preference.input.js +0 -53
  376. package/src/lib/notification/dto/notification-preference.input.js.map +0 -1
  377. package/src/lib/notification/index.js +0 -11
  378. package/src/lib/notification/index.js.map +0 -1
  379. package/src/lib/notification/notification-delivery-scheduler.service.d.ts +0 -13
  380. package/src/lib/notification/notification-delivery-scheduler.service.js +0 -53
  381. package/src/lib/notification/notification-delivery-scheduler.service.js.map +0 -1
  382. package/src/lib/notification/notification-delivery.service.d.ts +0 -23
  383. package/src/lib/notification/notification-delivery.service.js +0 -245
  384. package/src/lib/notification/notification-delivery.service.js.map +0 -1
  385. package/src/lib/notification/notification-dispatcher.token.d.ts +0 -7
  386. package/src/lib/notification/notification-dispatcher.token.js +0 -5
  387. package/src/lib/notification/notification-dispatcher.token.js.map +0 -1
  388. package/src/lib/notification/notification-options.d.ts +0 -215
  389. package/src/lib/notification/notification-options.js +0 -128
  390. package/src/lib/notification/notification-options.js.map +0 -1
  391. package/src/lib/notification/notification-options.module.d.ts +0 -23
  392. package/src/lib/notification/notification-options.module.js +0 -41
  393. package/src/lib/notification/notification-options.module.js.map +0 -1
  394. package/src/lib/notification/notification-preference.entity.d.ts +0 -10
  395. package/src/lib/notification/notification-preference.entity.js +0 -50
  396. package/src/lib/notification/notification-preference.entity.js.map +0 -1
  397. package/src/lib/notification/notification-sla-scheduler.service.d.ts +0 -13
  398. package/src/lib/notification/notification-sla-scheduler.service.js +0 -51
  399. package/src/lib/notification/notification-sla-scheduler.service.js.map +0 -1
  400. package/src/lib/notification/notification-template.d.ts +0 -13
  401. package/src/lib/notification/notification-template.js +0 -61
  402. package/src/lib/notification/notification-template.js.map +0 -1
  403. package/src/lib/notification/notification.entity.d.ts +0 -23
  404. package/src/lib/notification/notification.entity.js +0 -122
  405. package/src/lib/notification/notification.entity.js.map +0 -1
  406. package/src/lib/notification/notification.enums.d.ts +0 -24
  407. package/src/lib/notification/notification.enums.js +0 -45
  408. package/src/lib/notification/notification.enums.js.map +0 -1
  409. package/src/lib/notification/notification.module.d.ts +0 -2
  410. package/src/lib/notification/notification.module.js +0 -45
  411. package/src/lib/notification/notification.module.js.map +0 -1
  412. package/src/lib/notification/notification.mutations.d.ts +0 -11
  413. package/src/lib/notification/notification.mutations.js +0 -64
  414. package/src/lib/notification/notification.mutations.js.map +0 -1
  415. package/src/lib/notification/notification.queries.d.ts +0 -11
  416. package/src/lib/notification/notification.queries.js +0 -77
  417. package/src/lib/notification/notification.queries.js.map +0 -1
  418. package/src/lib/notification/notification.service.d.ts +0 -81
  419. package/src/lib/notification/notification.service.js +0 -621
  420. package/src/lib/notification/notification.service.js.map +0 -1
  421. package/src/lib/organization/dto/manager-resolution.input.d.ts +0 -18
  422. package/src/lib/organization/dto/manager-resolution.input.js +0 -107
  423. package/src/lib/organization/dto/manager-resolution.input.js.map +0 -1
  424. package/src/lib/organization/dto/membership.input.d.ts +0 -16
  425. package/src/lib/organization/dto/membership.input.js +0 -99
  426. package/src/lib/organization/dto/membership.input.js.map +0 -1
  427. package/src/lib/organization/dto/org-unit.input.d.ts +0 -24
  428. package/src/lib/organization/dto/org-unit.input.js +0 -119
  429. package/src/lib/organization/dto/org-unit.input.js.map +0 -1
  430. package/src/lib/organization/dto/position.input.d.ts +0 -13
  431. package/src/lib/organization/dto/position.input.js +0 -70
  432. package/src/lib/organization/dto/position.input.js.map +0 -1
  433. package/src/lib/organization/index.js +0 -16
  434. package/src/lib/organization/index.js.map +0 -1
  435. package/src/lib/organization/json-metadata.d.ts +0 -1
  436. package/src/lib/organization/json-metadata.js +0 -14
  437. package/src/lib/organization/json-metadata.js.map +0 -1
  438. package/src/lib/organization/manager-resolution.entity.d.ts +0 -11
  439. package/src/lib/organization/manager-resolution.entity.js +0 -55
  440. package/src/lib/organization/manager-resolution.entity.js.map +0 -1
  441. package/src/lib/organization/membership.entity.d.ts +0 -11
  442. package/src/lib/organization/membership.entity.js +0 -60
  443. package/src/lib/organization/membership.entity.js.map +0 -1
  444. package/src/lib/organization/org-unit-tree-commit-result.object.d.ts +0 -4
  445. package/src/lib/organization/org-unit-tree-commit-result.object.js +0 -17
  446. package/src/lib/organization/org-unit-tree-commit-result.object.js.map +0 -1
  447. package/src/lib/organization/org-unit.entity.d.ts +0 -13
  448. package/src/lib/organization/org-unit.entity.js +0 -64
  449. package/src/lib/organization/org-unit.entity.js.map +0 -1
  450. package/src/lib/organization/organization-summary.object.d.ts +0 -6
  451. package/src/lib/organization/organization-summary.object.js +0 -28
  452. package/src/lib/organization/organization-summary.object.js.map +0 -1
  453. package/src/lib/organization/organization.enums.d.ts +0 -11
  454. package/src/lib/organization/organization.enums.js +0 -22
  455. package/src/lib/organization/organization.enums.js.map +0 -1
  456. package/src/lib/organization/organization.module.d.ts +0 -2
  457. package/src/lib/organization/organization.module.js +0 -35
  458. package/src/lib/organization/organization.module.js.map +0 -1
  459. package/src/lib/organization/organization.mutations.d.ts +0 -26
  460. package/src/lib/organization/organization.mutations.js +0 -148
  461. package/src/lib/organization/organization.mutations.js.map +0 -1
  462. package/src/lib/organization/organization.queries.d.ts +0 -23
  463. package/src/lib/organization/organization.queries.js +0 -202
  464. package/src/lib/organization/organization.queries.js.map +0 -1
  465. package/src/lib/organization/organization.service.d.ts +0 -102
  466. package/src/lib/organization/organization.service.js +0 -751
  467. package/src/lib/organization/organization.service.js.map +0 -1
  468. package/src/lib/organization/position.entity.d.ts +0 -9
  469. package/src/lib/organization/position.entity.js +0 -48
  470. package/src/lib/organization/position.entity.js.map +0 -1
  471. package/src/lib/organization/resolved-manager.object.d.ts +0 -4
  472. package/src/lib/organization/resolved-manager.object.js +0 -20
  473. package/src/lib/organization/resolved-manager.object.js.map +0 -1
  474. package/src/lib/signature/index.js +0 -8
  475. package/src/lib/signature/index.js.map +0 -1
  476. package/src/lib/signature/signature-options.d.ts +0 -33
  477. package/src/lib/signature/signature-options.js +0 -51
  478. package/src/lib/signature/signature-options.js.map +0 -1
  479. package/src/lib/signature/signature-verification.object.d.ts +0 -6
  480. package/src/lib/signature/signature-verification.object.js +0 -28
  481. package/src/lib/signature/signature-verification.object.js.map +0 -1
  482. package/src/lib/signature/signature.entity.d.ts +0 -16
  483. package/src/lib/signature/signature.entity.js +0 -88
  484. package/src/lib/signature/signature.entity.js.map +0 -1
  485. package/src/lib/signature/signature.module.d.ts +0 -11
  486. package/src/lib/signature/signature.module.js +0 -60
  487. package/src/lib/signature/signature.module.js.map +0 -1
  488. package/src/lib/signature/signature.queries.d.ts +0 -11
  489. package/src/lib/signature/signature.queries.js +0 -46
  490. package/src/lib/signature/signature.queries.js.map +0 -1
  491. package/src/lib/signature/signature.service.d.ts +0 -25
  492. package/src/lib/signature/signature.service.js +0 -124
  493. package/src/lib/signature/signature.service.js.map +0 -1
  494. package/src/lib/template/approval-template-category.entity.d.ts +0 -9
  495. package/src/lib/template/approval-template-category.entity.js +0 -49
  496. package/src/lib/template/approval-template-category.entity.js.map +0 -1
  497. package/src/lib/template/approval-template-version.entity.d.ts +0 -21
  498. package/src/lib/template/approval-template-version.entity.js +0 -106
  499. package/src/lib/template/approval-template-version.entity.js.map +0 -1
  500. package/src/lib/template/approval-template.entity.d.ts +0 -14
  501. package/src/lib/template/approval-template.entity.js +0 -74
  502. package/src/lib/template/approval-template.entity.js.map +0 -1
  503. package/src/lib/template/dto/approval-template.input.d.ts +0 -36
  504. package/src/lib/template/dto/approval-template.input.js +0 -187
  505. package/src/lib/template/dto/approval-template.input.js.map +0 -1
  506. package/src/lib/template/index.js +0 -12
  507. package/src/lib/template/index.js.map +0 -1
  508. package/src/lib/template/template.enums.d.ts +0 -14
  509. package/src/lib/template/template.enums.js +0 -31
  510. package/src/lib/template/template.enums.js.map +0 -1
  511. package/src/lib/template/template.module.d.ts +0 -2
  512. package/src/lib/template/template.module.js +0 -33
  513. package/src/lib/template/template.module.js.map +0 -1
  514. package/src/lib/template/template.mutations.d.ts +0 -20
  515. package/src/lib/template/template.mutations.js +0 -139
  516. package/src/lib/template/template.mutations.js.map +0 -1
  517. package/src/lib/template/template.queries.d.ts +0 -16
  518. package/src/lib/template/template.queries.js +0 -133
  519. package/src/lib/template/template.queries.js.map +0 -1
  520. package/src/lib/template/template.service.d.ts +0 -64
  521. package/src/lib/template/template.service.js +0 -521
  522. package/src/lib/template/template.service.js.map +0 -1
  523. package/src/lib/template/workflow-definition.validator.d.ts +0 -9
  524. package/src/lib/template/workflow-definition.validator.js +0 -362
  525. package/src/lib/template/workflow-definition.validator.js.map +0 -1
  526. package/src/lib/testing/cel-js.jest.d.ts +0 -15
  527. package/src/lib/testing/cel-js.jest.js +0 -27
  528. package/src/lib/testing/cel-js.jest.js.map +0 -1
  529. package/src/lib/workflow-engine/activity-log.entity.d.ts +0 -12
  530. package/src/lib/workflow-engine/activity-log.entity.js +0 -62
  531. package/src/lib/workflow-engine/activity-log.entity.js.map +0 -1
  532. package/src/lib/workflow-engine/approval-instance-page-info.object.d.ts +0 -8
  533. package/src/lib/workflow-engine/approval-instance-page-info.object.js +0 -36
  534. package/src/lib/workflow-engine/approval-instance-page-info.object.js.map +0 -1
  535. package/src/lib/workflow-engine/approval-instance.entity.d.ts +0 -22
  536. package/src/lib/workflow-engine/approval-instance.entity.js +0 -113
  537. package/src/lib/workflow-engine/approval-instance.entity.js.map +0 -1
  538. package/src/lib/workflow-engine/dto/cancel-approval-instance.input.d.ts +0 -5
  539. package/src/lib/workflow-engine/dto/cancel-approval-instance.input.js +0 -29
  540. package/src/lib/workflow-engine/dto/cancel-approval-instance.input.js.map +0 -1
  541. package/src/lib/workflow-engine/dto/decide-task.input.d.ts +0 -9
  542. package/src/lib/workflow-engine/dto/decide-task.input.js +0 -47
  543. package/src/lib/workflow-engine/dto/decide-task.input.js.map +0 -1
  544. package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.d.ts +0 -6
  545. package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.js +0 -34
  546. package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.js.map +0 -1
  547. package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.d.ts +0 -6
  548. package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.js +0 -34
  549. package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.js.map +0 -1
  550. package/src/lib/workflow-engine/dto/submit-approval-instance.input.d.ts +0 -7
  551. package/src/lib/workflow-engine/dto/submit-approval-instance.input.js +0 -40
  552. package/src/lib/workflow-engine/dto/submit-approval-instance.input.js.map +0 -1
  553. package/src/lib/workflow-engine/index.js +0 -24
  554. package/src/lib/workflow-engine/index.js.map +0 -1
  555. package/src/lib/workflow-engine/task-candidate.entity.d.ts +0 -14
  556. package/src/lib/workflow-engine/task-candidate.entity.js +0 -72
  557. package/src/lib/workflow-engine/task-candidate.entity.js.map +0 -1
  558. package/src/lib/workflow-engine/task-decision.entity.d.ts +0 -12
  559. package/src/lib/workflow-engine/task-decision.entity.js +0 -60
  560. package/src/lib/workflow-engine/task-decision.entity.js.map +0 -1
  561. package/src/lib/workflow-engine/task.entity.d.ts +0 -20
  562. package/src/lib/workflow-engine/task.entity.js +0 -109
  563. package/src/lib/workflow-engine/task.entity.js.map +0 -1
  564. package/src/lib/workflow-engine/workflow-condition-evaluator.d.ts +0 -5
  565. package/src/lib/workflow-engine/workflow-condition-evaluator.js +0 -107
  566. package/src/lib/workflow-engine/workflow-condition-evaluator.js.map +0 -1
  567. package/src/lib/workflow-engine/workflow-dashboard-summary.object.d.ts +0 -8
  568. package/src/lib/workflow-engine/workflow-dashboard-summary.object.js +0 -36
  569. package/src/lib/workflow-engine/workflow-dashboard-summary.object.js.map +0 -1
  570. package/src/lib/workflow-engine/workflow-dry-run.object.d.ts +0 -21
  571. package/src/lib/workflow-engine/workflow-dry-run.object.js +0 -86
  572. package/src/lib/workflow-engine/workflow-dry-run.object.js.map +0 -1
  573. package/src/lib/workflow-engine/workflow-engine.enums.d.ts +0 -58
  574. package/src/lib/workflow-engine/workflow-engine.enums.js +0 -95
  575. package/src/lib/workflow-engine/workflow-engine.enums.js.map +0 -1
  576. package/src/lib/workflow-engine/workflow-engine.module.d.ts +0 -9
  577. package/src/lib/workflow-engine/workflow-engine.module.js +0 -76
  578. package/src/lib/workflow-engine/workflow-engine.module.js.map +0 -1
  579. package/src/lib/workflow-engine/workflow-engine.mutations.d.ts +0 -19
  580. package/src/lib/workflow-engine/workflow-engine.mutations.js +0 -106
  581. package/src/lib/workflow-engine/workflow-engine.mutations.js.map +0 -1
  582. package/src/lib/workflow-engine/workflow-engine.queries.d.ts +0 -29
  583. package/src/lib/workflow-engine/workflow-engine.queries.js +0 -225
  584. package/src/lib/workflow-engine/workflow-engine.queries.js.map +0 -1
  585. package/src/lib/workflow-engine/workflow-engine.service.d.ts +0 -145
  586. package/src/lib/workflow-engine/workflow-engine.service.js +0 -2785
  587. package/src/lib/workflow-engine/workflow-engine.service.js.map +0 -1
  588. package/src/lib/workflow-engine/workflow-engine.tokens.js +0 -5
  589. package/src/lib/workflow-engine/workflow-engine.tokens.js.map +0 -1
  590. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.d.ts +0 -18
  591. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.js +0 -39
  592. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.js.map +0 -1
  593. package/src/lib/workflow-engine/workflow-token.entity.d.ts +0 -10
  594. package/src/lib/workflow-engine/workflow-token.entity.js +0 -50
  595. package/src/lib/workflow-engine/workflow-token.entity.js.map +0 -1
  596. /package/src/{index.d.ts → index.ts} +0 -0
  597. /package/src/lib/attachment/{index.d.ts → index.ts} +0 -0
  598. /package/src/lib/bpm/{index.d.ts → index.ts} +0 -0
  599. /package/src/lib/bpm-auth/{index.d.ts → index.ts} +0 -0
  600. /package/src/lib/common/{index.d.ts → index.ts} +0 -0
  601. /package/src/lib/condition/{index.d.ts → index.ts} +0 -0
  602. /package/src/lib/database/{index.d.ts → index.ts} +0 -0
  603. /package/src/lib/delegation/{index.d.ts → index.ts} +0 -0
  604. /package/src/lib/form/{index.d.ts → index.ts} +0 -0
  605. /package/src/lib/identity/{index.d.ts → index.ts} +0 -0
  606. /package/src/lib/notification/{index.d.ts → index.ts} +0 -0
  607. /package/src/lib/organization/{index.d.ts → index.ts} +0 -0
  608. /package/src/lib/signature/{index.d.ts → index.ts} +0 -0
  609. /package/src/lib/template/{index.d.ts → index.ts} +0 -0
  610. /package/src/lib/workflow-engine/{index.d.ts → index.ts} +0 -0
@@ -0,0 +1,244 @@
1
+ import { InjectionToken, Provider } from '@nestjs/common';
2
+ import { MemberMetadata } from '@rytass/bpm-core-shared';
3
+ import { BPMAuthContext } from '../bpm-auth';
4
+ import { BPMMemberResolver } from './member-resolver.interface';
5
+
6
+ /**
7
+ * Structural contract a host identity backend should implement (or a thin
8
+ * adapter wrap) so BPM can be plugged into any `member-base`-style
9
+ * directory without coupling `@rytass/bpm-core-nestjs-module` to a
10
+ * specific identity package.
11
+ *
12
+ * `TMember` is the host's own member shape; the adapter walks it through
13
+ * {@link BPMMemberBaseAdapterOptions} field readers.
14
+ */
15
+ export interface BPMMemberBaseDirectory<TMember> {
16
+ readonly resolveMember: (memberId: string) => Promise<TMember | null>;
17
+ readonly resolveMembers?: (
18
+ memberIds: readonly string[],
19
+ ) => Promise<readonly TMember[]>;
20
+ readonly searchMembers?: (searchText: string) => Promise<readonly TMember[]>;
21
+ }
22
+
23
+ /**
24
+ * Per-host field readers that tell the adapter how to extract canonical
25
+ * BPM fields out of the host's `TMember`. Each reader is optional;
26
+ * sensible defaults are inferred when the host uses common conventions
27
+ * (`memberId` / `id` / `sub` for the member id, `email` for the email,
28
+ * `name` / `displayName` for the name, etc.).
29
+ *
30
+ * Provide `readPermissions` and `readRoles` if you want BPM's
31
+ * `BPMAdminGuard` / `BPMDesignerGuard` to receive the host's RBAC
32
+ * strings; otherwise the resolved `BPMAuthContext` will carry empty
33
+ * arrays.
34
+ */
35
+ export interface BPMMemberBaseAdapterOptions<TMember> {
36
+ readonly readCustomFields?: (
37
+ member: TMember,
38
+ ) => Readonly<Record<string, unknown>>;
39
+ readonly readEmail?: (member: TMember) => string | null;
40
+ readonly readMemberId?: (member: TMember) => string | null;
41
+ readonly readName?: (member: TMember) => string | null;
42
+ readonly readPermissions?: (member: TMember) => readonly string[];
43
+ readonly readRoles?: (member: TMember) => readonly string[];
44
+ }
45
+
46
+ export interface BPMMemberBaseResolverProviderOptions<TMember> {
47
+ readonly adapterOptions?: BPMMemberBaseAdapterOptions<TMember>;
48
+ readonly directoryToken: InjectionToken<BPMMemberBaseDirectory<TMember>>;
49
+ readonly provide: InjectionToken<BPMMemberResolver>;
50
+ }
51
+
52
+ export class BPMMemberBaseResolverAdapter<TMember>
53
+ implements BPMMemberResolver
54
+ {
55
+ constructor(
56
+ private readonly directory: BPMMemberBaseDirectory<TMember>,
57
+ private readonly options: BPMMemberBaseAdapterOptions<TMember> = {},
58
+ ) {}
59
+
60
+ async resolve(memberId: string): Promise<MemberMetadata> {
61
+ const member = await this.directory.resolveMember(memberId);
62
+
63
+ if (!member) {
64
+ throw new Error(`member-base member ${memberId} was not found`);
65
+ }
66
+
67
+ return readMemberMetadataFromMemberBaseMember(member, this.options);
68
+ }
69
+
70
+ async resolveMany(
71
+ memberIds: readonly string[],
72
+ ): Promise<ReadonlyMap<string, MemberMetadata>> {
73
+ const members = this.directory.resolveMembers
74
+ ? await this.directory.resolveMembers(memberIds)
75
+ : await Promise.all(
76
+ memberIds.map((memberId): Promise<TMember | null> =>
77
+ this.directory.resolveMember(memberId),
78
+ ),
79
+ );
80
+
81
+ return members
82
+ .filter((member): member is TMember => Boolean(member))
83
+ .map((member): MemberMetadata =>
84
+ readMemberMetadataFromMemberBaseMember(member, this.options),
85
+ )
86
+ .reduce<ReadonlyMap<string, MemberMetadata>>(
87
+ (metadataByMemberId, metadata): ReadonlyMap<string, MemberMetadata> =>
88
+ new Map(metadataByMemberId).set(metadata.memberId, metadata),
89
+ new Map(),
90
+ );
91
+ }
92
+
93
+ async search(searchText: string): Promise<readonly MemberMetadata[]> {
94
+ if (!this.directory.searchMembers) {
95
+ return [];
96
+ }
97
+
98
+ return (await this.directory.searchMembers(searchText)).map(
99
+ (member): MemberMetadata =>
100
+ readMemberMetadataFromMemberBaseMember(member, this.options),
101
+ );
102
+ }
103
+ }
104
+
105
+ /**
106
+ * Helper for hosts that already hold an authenticated `TMember` (for
107
+ * example from `@rytass/member-base-nestjs-module`) and want to project it
108
+ * into a {@link BPMAuthContext} without writing the boilerplate by hand.
109
+ *
110
+ * Returns `null` when the input is nullish or when the member is missing
111
+ * an id — never throws. Pair this with `BPMRootModuleOptions.authContextFactory`
112
+ * so BPM resolvers receive the projected context on every request.
113
+ *
114
+ * @example
115
+ * ```ts
116
+ * const bpmAuth = createBPMAuthContextFromMemberBaseMember(memberBaseUser, {
117
+ * readRoles: (m) => m.roles,
118
+ * readPermissions: (m) => m.permissions,
119
+ * readCustomFields: (m) => ({ tenantId: m.tenantId }),
120
+ * });
121
+ * ```
122
+ */
123
+ export function createBPMAuthContextFromMemberBaseMember<TMember>(
124
+ member: TMember | null | undefined,
125
+ options: BPMMemberBaseAdapterOptions<TMember> = {},
126
+ ): BPMAuthContext | null {
127
+ if (!member) {
128
+ return null;
129
+ }
130
+
131
+ const memberId = readMemberId(member, options);
132
+
133
+ return memberId
134
+ ? {
135
+ memberId,
136
+ metadata: options.readCustomFields?.(member) ?? {},
137
+ permissions: options.readPermissions?.(member) ?? [],
138
+ roles: options.readRoles?.(member) ?? [],
139
+ }
140
+ : null;
141
+ }
142
+
143
+ /**
144
+ * Builds a Nest `Provider` that adapts a host-provided
145
+ * {@link BPMMemberBaseDirectory} into a {@link BPMMemberResolver}, then
146
+ * registers it under the host-chosen injection token (typically
147
+ * {@link BPM_MEMBER_RESOLVER}).
148
+ *
149
+ * Pass the result inside `BPMRootModuleOptions.memberResolverProvider`.
150
+ *
151
+ * @example
152
+ * ```ts
153
+ * BPMRootModule.forRoot({
154
+ * memberResolverProvider: createBPMMemberBaseResolverProvider({
155
+ * provide: BPM_MEMBER_RESOLVER,
156
+ * directoryToken: HOST_MEMBER_DIRECTORY,
157
+ * adapterOptions: {
158
+ * readEmail: (m) => m.email,
159
+ * readName: (m) => m.name,
160
+ * },
161
+ * }),
162
+ * // ...
163
+ * });
164
+ * ```
165
+ */
166
+ export function createBPMMemberBaseResolverProvider<TMember>({
167
+ adapterOptions,
168
+ directoryToken,
169
+ provide,
170
+ }: BPMMemberBaseResolverProviderOptions<TMember>): Provider<BPMMemberResolver> {
171
+ return {
172
+ inject: [directoryToken],
173
+ provide,
174
+ useFactory: (
175
+ directory: BPMMemberBaseDirectory<TMember>,
176
+ ): BPMMemberResolver =>
177
+ new BPMMemberBaseResolverAdapter(directory, adapterOptions),
178
+ };
179
+ }
180
+
181
+ export function readMemberMetadataFromMemberBaseMember<TMember>(
182
+ member: TMember,
183
+ options: BPMMemberBaseAdapterOptions<TMember> = {},
184
+ ): MemberMetadata {
185
+ const memberId = readMemberId(member, options);
186
+
187
+ if (!memberId) {
188
+ throw new Error('member-base member id is required for BPM integration');
189
+ }
190
+
191
+ return {
192
+ customFields: options.readCustomFields?.(member) ?? {},
193
+ email: readMemberEmail(member, options) ?? '',
194
+ memberId,
195
+ name: readMemberName(member, options) ?? memberId,
196
+ };
197
+ }
198
+
199
+ function readMemberId<TMember>(
200
+ member: TMember,
201
+ options: BPMMemberBaseAdapterOptions<TMember>,
202
+ ): string | null {
203
+ return (
204
+ normalizeText(options.readMemberId?.(member)) ??
205
+ readStringProperty(member, 'memberId') ??
206
+ readStringProperty(member, 'id') ??
207
+ readStringProperty(member, 'sub')
208
+ );
209
+ }
210
+
211
+ function readMemberEmail<TMember>(
212
+ member: TMember,
213
+ options: BPMMemberBaseAdapterOptions<TMember>,
214
+ ): string | null {
215
+ return normalizeText(options.readEmail?.(member)) ?? readStringProperty(member, 'email');
216
+ }
217
+
218
+ function readMemberName<TMember>(
219
+ member: TMember,
220
+ options: BPMMemberBaseAdapterOptions<TMember>,
221
+ ): string | null {
222
+ return (
223
+ normalizeText(options.readName?.(member)) ??
224
+ readStringProperty(member, 'name') ??
225
+ readStringProperty(member, 'displayName') ??
226
+ readMemberEmail(member, options)
227
+ );
228
+ }
229
+
230
+ function readStringProperty(value: unknown, key: string): string | null {
231
+ if (!isRecord(value)) {
232
+ return null;
233
+ }
234
+
235
+ return normalizeText(value[key]);
236
+ }
237
+
238
+ function normalizeText(value: unknown): string | null {
239
+ return typeof value === 'string' && value.trim() ? value.trim() : null;
240
+ }
241
+
242
+ function isRecord(value: unknown): value is Readonly<Record<string, unknown>> {
243
+ return typeof value === 'object' && value !== null;
244
+ }
@@ -0,0 +1,27 @@
1
+ import { Field, ID, ObjectType } from '@nestjs/graphql';
2
+ import { Column, Entity, PrimaryGeneratedColumn, Unique } from 'typeorm';
3
+ import { MemberMetadata } from '@rytass/bpm-core-shared';
4
+
5
+ @Entity('member_metadata_cache')
6
+ @Unique(['memberId'])
7
+ @ObjectType('MemberMetadataCache')
8
+ export class MemberMetadataCacheEntity {
9
+ @PrimaryGeneratedColumn('uuid')
10
+ @Field(() => ID)
11
+ id!: string;
12
+
13
+ @Column('text', { name: 'member_id' })
14
+ @Field()
15
+ memberId!: string;
16
+
17
+ @Column('jsonb')
18
+ metadata!: MemberMetadata;
19
+
20
+ @Column('timestamptz', { name: 'fetched_at' })
21
+ @Field()
22
+ fetchedAt!: Date;
23
+
24
+ @Column('timestamptz', { name: 'expires_at' })
25
+ @Field()
26
+ expiresAt!: Date;
27
+ }
@@ -0,0 +1,28 @@
1
+ import { Field, ID, ObjectType } from '@nestjs/graphql';
2
+ import { MemberMetadata } from '@rytass/bpm-core-shared';
3
+
4
+ @ObjectType('MemberProfile')
5
+ export class MemberProfileObject {
6
+ @Field(() => ID)
7
+ memberId!: string;
8
+
9
+ @Field()
10
+ name!: string;
11
+
12
+ @Field()
13
+ email!: string;
14
+
15
+ @Field()
16
+ customFieldsJson!: string;
17
+ }
18
+
19
+ export function toMemberProfileObject(
20
+ metadata: MemberMetadata,
21
+ ): MemberProfileObject {
22
+ return {
23
+ customFieldsJson: JSON.stringify(metadata.customFields),
24
+ email: metadata.email,
25
+ memberId: metadata.memberId,
26
+ name: metadata.name,
27
+ };
28
+ }
@@ -1,4 +1,5 @@
1
1
  import { MemberMetadata } from '@rytass/bpm-core-shared';
2
+
2
3
  /**
3
4
  * Injection token for the host-provided `BPMMemberResolver`.
4
5
  *
@@ -7,13 +8,15 @@ import { MemberMetadata } from '@rytass/bpm-core-shared';
7
8
  * services look up display names, emails, and approver candidates via
8
9
  * this token without coupling to any specific identity backend.
9
10
  */
10
- export declare const BPM_MEMBER_RESOLVER: unique symbol;
11
+ export const BPM_MEMBER_RESOLVER = Symbol('BPM_MEMBER_RESOLVER');
12
+
11
13
  /**
12
14
  * @deprecated Use {@link BPM_MEMBER_RESOLVER}. Kept as a backwards-compatible
13
15
  * alias for hosts that adopted the original name. To be removed in a future
14
16
  * major release.
15
17
  */
16
- export declare const MEMBER_RESOLVER: symbol;
18
+ export const MEMBER_RESOLVER = BPM_MEMBER_RESOLVER;
19
+
17
20
  /**
18
21
  * Contract host applications must implement so BPM can resolve member
19
22
  * profiles, approver candidates, and search results.
@@ -30,10 +33,13 @@ export declare const MEMBER_RESOLVER: symbol;
30
33
  * query simply returns an empty array.
31
34
  */
32
35
  export interface BPMMemberResolver {
33
- resolve(memberId: string): Promise<MemberMetadata>;
34
- resolveMany(memberIds: readonly string[]): Promise<ReadonlyMap<string, MemberMetadata>>;
35
- search?(searchText: string): Promise<readonly MemberMetadata[]>;
36
+ resolve(memberId: string): Promise<MemberMetadata>;
37
+ resolveMany(
38
+ memberIds: readonly string[],
39
+ ): Promise<ReadonlyMap<string, MemberMetadata>>;
40
+ search?(searchText: string): Promise<readonly MemberMetadata[]>;
36
41
  }
42
+
37
43
  /**
38
44
  * @deprecated Use {@link BPMMemberResolver}. Kept as a backwards-compatible
39
45
  * alias.
@@ -0,0 +1,14 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ export class EnablePostgresExtensions0000000000001 implements MigrationInterface {
4
+ readonly name = 'EnablePostgresExtensions0000000000001';
5
+
6
+ async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"');
8
+ await queryRunner.query('CREATE EXTENSION IF NOT EXISTS "ltree"');
9
+ }
10
+
11
+ async down(queryRunner: QueryRunner): Promise<void> {
12
+ await queryRunner.query('DROP EXTENSION IF EXISTS "ltree"');
13
+ }
14
+ }
@@ -1,12 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IdentityOrganizationFoundation0000000001000 = void 0;
4
- class IdentityOrganizationFoundation0000000001000 {
5
- constructor() {
6
- this.name = 'IdentityOrganizationFoundation0000000001000';
7
- }
8
- async up(queryRunner) {
9
- await queryRunner.query(`
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ export class IdentityOrganizationFoundation0000000001000 implements MigrationInterface {
4
+ readonly name = 'IdentityOrganizationFoundation0000000001000';
5
+
6
+ async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query(`
10
8
  CREATE TABLE IF NOT EXISTS member_metadata_cache (
11
9
  id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
12
10
  member_id text NOT NULL UNIQUE,
@@ -15,7 +13,8 @@ class IdentityOrganizationFoundation0000000001000 {
15
13
  expires_at timestamptz NOT NULL
16
14
  )
17
15
  `);
18
- await queryRunner.query(`
16
+
17
+ await queryRunner.query(`
19
18
  CREATE TABLE IF NOT EXISTS org_units (
20
19
  id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
21
20
  parent_id uuid NULL REFERENCES org_units(id),
@@ -29,14 +28,19 @@ class IdentityOrganizationFoundation0000000001000 {
29
28
  updated_at timestamptz NOT NULL DEFAULT now()
30
29
  )
31
30
  `);
32
- await queryRunner.query('CREATE INDEX IF NOT EXISTS idx_org_units_parent_id ON org_units(parent_id)');
33
- await queryRunner.query('CREATE INDEX IF NOT EXISTS idx_org_units_path_gist ON org_units USING gist(path)');
34
- await queryRunner.query(`
31
+ await queryRunner.query(
32
+ 'CREATE INDEX IF NOT EXISTS idx_org_units_parent_id ON org_units(parent_id)',
33
+ );
34
+ await queryRunner.query(
35
+ 'CREATE INDEX IF NOT EXISTS idx_org_units_path_gist ON org_units USING gist(path)',
36
+ );
37
+ await queryRunner.query(`
35
38
  CREATE INDEX IF NOT EXISTS idx_org_units_not_deleted
36
39
  ON org_units(deleted_at)
37
40
  WHERE deleted_at IS NULL
38
41
  `);
39
- await queryRunner.query(`
42
+
43
+ await queryRunner.query(`
40
44
  CREATE TABLE IF NOT EXISTS positions (
41
45
  id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
42
46
  code text NOT NULL UNIQUE,
@@ -47,7 +51,8 @@ class IdentityOrganizationFoundation0000000001000 {
47
51
  updated_at timestamptz NOT NULL DEFAULT now()
48
52
  )
49
53
  `);
50
- await queryRunner.query(`
54
+
55
+ await queryRunner.query(`
51
56
  CREATE TABLE IF NOT EXISTS memberships (
52
57
  id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
53
58
  member_id text NOT NULL,
@@ -66,9 +71,14 @@ class IdentityOrganizationFoundation0000000001000 {
66
71
  )
67
72
  )
68
73
  `);
69
- await queryRunner.query('CREATE INDEX IF NOT EXISTS idx_memberships_member_id ON memberships(member_id)');
70
- await queryRunner.query('CREATE INDEX IF NOT EXISTS idx_memberships_org_unit_id ON memberships(org_unit_id)');
71
- await queryRunner.query(`
74
+ await queryRunner.query(
75
+ 'CREATE INDEX IF NOT EXISTS idx_memberships_member_id ON memberships(member_id)',
76
+ );
77
+ await queryRunner.query(
78
+ 'CREATE INDEX IF NOT EXISTS idx_memberships_org_unit_id ON memberships(org_unit_id)',
79
+ );
80
+
81
+ await queryRunner.query(`
72
82
  CREATE TABLE IF NOT EXISTS manager_resolutions (
73
83
  id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
74
84
  scope_type text NOT NULL,
@@ -80,18 +90,17 @@ class IdentityOrganizationFoundation0000000001000 {
80
90
  created_at timestamptz NOT NULL DEFAULT now()
81
91
  )
82
92
  `);
83
- await queryRunner.query(`
93
+ await queryRunner.query(`
84
94
  CREATE INDEX IF NOT EXISTS idx_manager_resolutions_scope
85
95
  ON manager_resolutions(scope_type, scope_id)
86
96
  `);
87
- }
88
- async down(queryRunner) {
89
- await queryRunner.query('DROP TABLE IF EXISTS manager_resolutions');
90
- await queryRunner.query('DROP TABLE IF EXISTS memberships');
91
- await queryRunner.query('DROP TABLE IF EXISTS positions');
92
- await queryRunner.query('DROP TABLE IF EXISTS org_units');
93
- await queryRunner.query('DROP TABLE IF EXISTS member_metadata_cache');
94
- }
97
+ }
98
+
99
+ async down(queryRunner: QueryRunner): Promise<void> {
100
+ await queryRunner.query('DROP TABLE IF EXISTS manager_resolutions');
101
+ await queryRunner.query('DROP TABLE IF EXISTS memberships');
102
+ await queryRunner.query('DROP TABLE IF EXISTS positions');
103
+ await queryRunner.query('DROP TABLE IF EXISTS org_units');
104
+ await queryRunner.query('DROP TABLE IF EXISTS member_metadata_cache');
105
+ }
95
106
  }
96
- exports.IdentityOrganizationFoundation0000000001000 = IdentityOrganizationFoundation0000000001000;
97
- //# sourceMappingURL=0000000001000-identity-organization-foundation.js.map
@@ -1,12 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FormBuilderFoundation0000000002000 = void 0;
4
- class FormBuilderFoundation0000000002000 {
5
- constructor() {
6
- this.name = 'FormBuilderFoundation0000000002000';
7
- }
8
- async up(queryRunner) {
9
- await queryRunner.query(`
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ export class FormBuilderFoundation0000000002000 implements MigrationInterface {
4
+ readonly name = 'FormBuilderFoundation0000000002000';
5
+
6
+ async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query(`
10
8
  CREATE TABLE IF NOT EXISTS form_definitions (
11
9
  id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
12
10
  name text NOT NULL,
@@ -18,7 +16,8 @@ class FormBuilderFoundation0000000002000 {
18
16
  created_by_member_id text NULL
19
17
  )
20
18
  `);
21
- await queryRunner.query(`
19
+
20
+ await queryRunner.query(`
22
21
  CREATE TABLE IF NOT EXISTS form_definition_versions (
23
22
  id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
24
23
  form_definition_id uuid NOT NULL REFERENCES form_definitions(id),
@@ -37,30 +36,32 @@ class FormBuilderFoundation0000000002000 {
37
36
  )
38
37
  )
39
38
  `);
40
- await queryRunner.query(`
39
+
40
+ await queryRunner.query(`
41
41
  ALTER TABLE form_definitions
42
42
  ADD CONSTRAINT fk_form_definitions_current_version
43
43
  FOREIGN KEY (current_version_id)
44
44
  REFERENCES form_definition_versions(id)
45
45
  `);
46
- await queryRunner.query(`
46
+
47
+ await queryRunner.query(`
47
48
  CREATE INDEX IF NOT EXISTS idx_form_definition_versions_definition_status
48
49
  ON form_definition_versions(form_definition_id, status)
49
50
  `);
50
- await queryRunner.query(`
51
+
52
+ await queryRunner.query(`
51
53
  CREATE INDEX IF NOT EXISTS idx_form_definitions_not_deleted
52
54
  ON form_definitions(deleted_at)
53
55
  WHERE deleted_at IS NULL
54
56
  `);
55
- }
56
- async down(queryRunner) {
57
- await queryRunner.query(`
57
+ }
58
+
59
+ async down(queryRunner: QueryRunner): Promise<void> {
60
+ await queryRunner.query(`
58
61
  ALTER TABLE form_definitions
59
62
  DROP CONSTRAINT IF EXISTS fk_form_definitions_current_version
60
63
  `);
61
- await queryRunner.query('DROP TABLE IF EXISTS form_definition_versions');
62
- await queryRunner.query('DROP TABLE IF EXISTS form_definitions');
63
- }
64
+ await queryRunner.query('DROP TABLE IF EXISTS form_definition_versions');
65
+ await queryRunner.query('DROP TABLE IF EXISTS form_definitions');
66
+ }
64
67
  }
65
- exports.FormBuilderFoundation0000000002000 = FormBuilderFoundation0000000002000;
66
- //# sourceMappingURL=0000000002000-form-builder-foundation.js.map
@@ -1,12 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApprovalTemplateFoundation0000000003000 = void 0;
4
- class ApprovalTemplateFoundation0000000003000 {
5
- constructor() {
6
- this.name = 'ApprovalTemplateFoundation0000000003000';
7
- }
8
- async up(queryRunner) {
9
- await queryRunner.query(`
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ export class ApprovalTemplateFoundation0000000003000
4
+ implements MigrationInterface
5
+ {
6
+ readonly name = 'ApprovalTemplateFoundation0000000003000';
7
+
8
+ async up(queryRunner: QueryRunner): Promise<void> {
9
+ await queryRunner.query(`
10
10
  CREATE TABLE IF NOT EXISTS approval_templates (
11
11
  id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
12
12
  name text NOT NULL,
@@ -19,7 +19,8 @@ class ApprovalTemplateFoundation0000000003000 {
19
19
  created_by_member_id text NULL
20
20
  )
21
21
  `);
22
- await queryRunner.query(`
22
+
23
+ await queryRunner.query(`
23
24
  CREATE TABLE IF NOT EXISTS approval_template_versions (
24
25
  id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
25
26
  template_id uuid NOT NULL REFERENCES approval_templates(id),
@@ -41,30 +42,32 @@ class ApprovalTemplateFoundation0000000003000 {
41
42
  )
42
43
  )
43
44
  `);
44
- await queryRunner.query(`
45
+
46
+ await queryRunner.query(`
45
47
  ALTER TABLE approval_templates
46
48
  ADD CONSTRAINT fk_approval_templates_current_version
47
49
  FOREIGN KEY (current_version_id)
48
50
  REFERENCES approval_template_versions(id)
49
51
  `);
50
- await queryRunner.query(`
52
+
53
+ await queryRunner.query(`
51
54
  CREATE INDEX IF NOT EXISTS idx_approval_template_versions_template_status
52
55
  ON approval_template_versions(template_id, status)
53
56
  `);
54
- await queryRunner.query(`
57
+
58
+ await queryRunner.query(`
55
59
  CREATE INDEX IF NOT EXISTS idx_approval_templates_not_deleted
56
60
  ON approval_templates(deleted_at)
57
61
  WHERE deleted_at IS NULL
58
62
  `);
59
- }
60
- async down(queryRunner) {
61
- await queryRunner.query(`
63
+ }
64
+
65
+ async down(queryRunner: QueryRunner): Promise<void> {
66
+ await queryRunner.query(`
62
67
  ALTER TABLE approval_templates
63
68
  DROP CONSTRAINT IF EXISTS fk_approval_templates_current_version
64
69
  `);
65
- await queryRunner.query('DROP TABLE IF EXISTS approval_template_versions');
66
- await queryRunner.query('DROP TABLE IF EXISTS approval_templates');
67
- }
70
+ await queryRunner.query('DROP TABLE IF EXISTS approval_template_versions');
71
+ await queryRunner.query('DROP TABLE IF EXISTS approval_templates');
72
+ }
68
73
  }
69
- exports.ApprovalTemplateFoundation0000000003000 = ApprovalTemplateFoundation0000000003000;
70
- //# sourceMappingURL=0000000003000-approval-template-foundation.js.map