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

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 (612) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/LICENSE +21 -0
  3. package/README.md +143 -0
  4. package/package.json +3 -3
  5. package/src/index.js +18 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/attachment/attachment-options.d.ts +44 -0
  8. package/src/lib/attachment/attachment-options.js +62 -0
  9. package/src/lib/attachment/attachment-options.js.map +1 -0
  10. package/src/lib/attachment/attachment-storage.provider.d.ts +4 -0
  11. package/src/lib/attachment/attachment-storage.provider.js +35 -0
  12. package/src/lib/attachment/attachment-storage.provider.js.map +1 -0
  13. package/src/lib/attachment/{attachment-storage.token.ts → attachment-storage.token.d.ts} +1 -3
  14. package/src/lib/attachment/attachment-storage.token.js +5 -0
  15. package/src/lib/attachment/attachment-storage.token.js.map +1 -0
  16. package/src/lib/attachment/attachment.controller.d.ts +8 -0
  17. package/src/lib/attachment/attachment.controller.js +38 -0
  18. package/src/lib/attachment/attachment.controller.js.map +1 -0
  19. package/src/lib/attachment/attachment.entity.d.ts +14 -0
  20. package/src/lib/attachment/attachment.entity.js +74 -0
  21. package/src/lib/attachment/attachment.entity.js.map +1 -0
  22. package/src/lib/attachment/attachment.module.d.ts +27 -0
  23. package/src/lib/attachment/attachment.module.js +103 -0
  24. package/src/lib/attachment/attachment.module.js.map +1 -0
  25. package/src/lib/attachment/attachment.mutations.d.ts +8 -0
  26. package/src/lib/attachment/attachment.mutations.js +35 -0
  27. package/src/lib/attachment/attachment.mutations.js.map +1 -0
  28. package/src/lib/attachment/attachment.queries.d.ts +9 -0
  29. package/src/lib/attachment/attachment.queries.js +78 -0
  30. package/src/lib/attachment/attachment.queries.js.map +1 -0
  31. package/src/lib/attachment/attachment.service.d.ts +49 -0
  32. package/src/lib/attachment/attachment.service.js +276 -0
  33. package/src/lib/attachment/attachment.service.js.map +1 -0
  34. package/src/lib/attachment/dto/upload-attachment.input.d.ts +11 -0
  35. package/src/lib/attachment/dto/upload-attachment.input.js +68 -0
  36. package/src/lib/attachment/dto/upload-attachment.input.js.map +1 -0
  37. package/src/lib/attachment/index.js +9 -0
  38. package/src/lib/attachment/index.js.map +1 -0
  39. package/src/lib/bpm/bpm-root.module.d.ts +155 -0
  40. package/src/lib/bpm/bpm-root.module.js +170 -0
  41. package/src/lib/bpm/bpm-root.module.js.map +1 -0
  42. package/src/lib/bpm/index.js +5 -0
  43. package/src/lib/bpm/index.js.map +1 -0
  44. package/src/lib/bpm-auth/bpm-auth-context.d.ts +24 -0
  45. package/src/lib/bpm-auth/bpm-auth-context.extractor.d.ts +4 -0
  46. package/src/lib/bpm-auth/bpm-auth-context.extractor.js +69 -0
  47. package/src/lib/bpm-auth/bpm-auth-context.extractor.js.map +1 -0
  48. package/src/lib/bpm-auth/bpm-auth-context.js +15 -0
  49. package/src/lib/bpm-auth/bpm-auth-context.js.map +1 -0
  50. package/src/lib/bpm-auth/bpm-auth.authorization.d.ts +12 -0
  51. package/src/lib/bpm-auth/bpm-auth.authorization.js +67 -0
  52. package/src/lib/bpm-auth/bpm-auth.authorization.js.map +1 -0
  53. package/src/lib/bpm-auth/bpm-auth.decorators.d.ts +3 -0
  54. package/src/lib/bpm-auth/bpm-auth.decorators.js +11 -0
  55. package/src/lib/bpm-auth/bpm-auth.decorators.js.map +1 -0
  56. package/src/lib/bpm-auth/bpm-auth.guard.d.ts +7 -0
  57. package/src/lib/bpm-auth/bpm-auth.guard.js +24 -0
  58. package/src/lib/bpm-auth/bpm-auth.guard.js.map +1 -0
  59. package/src/lib/bpm-auth/bpm-auth.module.d.ts +6 -0
  60. package/src/lib/bpm-auth/bpm-auth.module.js +69 -0
  61. package/src/lib/bpm-auth/bpm-auth.module.js.map +1 -0
  62. package/src/lib/bpm-auth/bpm-auth.options.d.ts +11 -0
  63. package/src/lib/bpm-auth/bpm-auth.options.js +3 -0
  64. package/src/lib/bpm-auth/bpm-auth.options.js.map +1 -0
  65. package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.d.ts +10 -0
  66. package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.js +40 -0
  67. package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.js.map +1 -0
  68. package/src/lib/bpm-auth/index.js +10 -0
  69. package/src/lib/bpm-auth/index.js.map +1 -0
  70. package/src/lib/common/filters/all-exceptions.filter.d.ts +25 -0
  71. package/src/lib/common/filters/all-exceptions.filter.js +93 -0
  72. package/src/lib/common/filters/all-exceptions.filter.js.map +1 -0
  73. package/src/lib/common/index.js +5 -0
  74. package/src/lib/common/index.js.map +1 -0
  75. package/src/lib/common/iso-duration.d.ts +1 -0
  76. package/src/lib/common/iso-duration.js +27 -0
  77. package/src/lib/common/iso-duration.js.map +1 -0
  78. package/src/lib/condition/condition.module.d.ts +2 -0
  79. package/src/lib/condition/condition.module.js +16 -0
  80. package/src/lib/condition/condition.module.js.map +1 -0
  81. package/src/lib/condition/condition.service.d.ts +16 -0
  82. package/src/lib/condition/condition.service.js +82 -0
  83. package/src/lib/condition/condition.service.js.map +1 -0
  84. package/src/lib/condition/index.js +6 -0
  85. package/src/lib/condition/index.js.map +1 -0
  86. package/src/lib/database/data-source.d.ts +4 -0
  87. package/src/lib/database/data-source.js +7 -0
  88. package/src/lib/database/data-source.js.map +1 -0
  89. package/src/lib/database/index.js +6 -0
  90. package/src/lib/database/index.js.map +1 -0
  91. package/src/lib/database/migration-runner.d.ts +1 -0
  92. package/src/lib/database/migration-runner.js +23 -0
  93. package/src/lib/database/migration-runner.js.map +1 -0
  94. package/src/lib/database/typeorm.config.d.ts +14 -0
  95. package/src/lib/database/typeorm.config.js +135 -0
  96. package/src/lib/database/typeorm.config.js.map +1 -0
  97. package/src/lib/delegation/delegation-rule.entity.d.ts +19 -0
  98. package/src/lib/delegation/delegation-rule.entity.js +99 -0
  99. package/src/lib/delegation/delegation-rule.entity.js.map +1 -0
  100. package/src/lib/delegation/delegation.enums.d.ts +10 -0
  101. package/src/lib/delegation/delegation.enums.js +23 -0
  102. package/src/lib/delegation/delegation.enums.js.map +1 -0
  103. package/src/lib/delegation/delegation.module.d.ts +2 -0
  104. package/src/lib/delegation/delegation.module.js +22 -0
  105. package/src/lib/delegation/delegation.module.js.map +1 -0
  106. package/src/lib/delegation/delegation.mutations.d.ts +11 -0
  107. package/src/lib/delegation/delegation.mutations.js +87 -0
  108. package/src/lib/delegation/delegation.mutations.js.map +1 -0
  109. package/src/lib/delegation/delegation.queries.d.ts +10 -0
  110. package/src/lib/delegation/delegation.queries.js +91 -0
  111. package/src/lib/delegation/delegation.queries.js.map +1 -0
  112. package/src/lib/delegation/delegation.service.d.ts +56 -0
  113. package/src/lib/delegation/delegation.service.js +268 -0
  114. package/src/lib/delegation/delegation.service.js.map +1 -0
  115. package/src/lib/delegation/dto/delegation-rule.input.d.ts +24 -0
  116. package/src/lib/delegation/dto/delegation-rule.input.js +143 -0
  117. package/src/lib/delegation/dto/delegation-rule.input.js.map +1 -0
  118. package/src/lib/delegation/index.js +9 -0
  119. package/src/lib/delegation/index.js.map +1 -0
  120. package/src/lib/form/dto/form-definition.input.d.ts +21 -0
  121. package/src/lib/form/dto/form-definition.input.js +103 -0
  122. package/src/lib/form/dto/form-definition.input.js.map +1 -0
  123. package/src/lib/form/form-definition-version.entity.d.ts +17 -0
  124. package/src/lib/form/form-definition-version.entity.js +84 -0
  125. package/src/lib/form/form-definition-version.entity.js.map +1 -0
  126. package/src/lib/form/form-definition.entity.d.ts +13 -0
  127. package/src/lib/form/form-definition.entity.js +66 -0
  128. package/src/lib/form/form-definition.entity.js.map +1 -0
  129. package/src/lib/form/form-schema-lint.object.d.ts +4 -0
  130. package/src/lib/form/form-schema-lint.object.js +20 -0
  131. package/src/lib/form/form-schema-lint.object.js.map +1 -0
  132. package/src/lib/form/form-schema.validator.d.ts +13 -0
  133. package/src/lib/form/form-schema.validator.js +354 -0
  134. package/src/lib/form/form-schema.validator.js.map +1 -0
  135. package/src/lib/form/form.enums.d.ts +9 -0
  136. package/src/lib/form/form.enums.js +22 -0
  137. package/src/lib/form/form.enums.js.map +1 -0
  138. package/src/lib/form/form.module.d.ts +2 -0
  139. package/src/lib/form/form.module.js +27 -0
  140. package/src/lib/form/form.module.js.map +1 -0
  141. package/src/lib/form/form.mutations.d.ts +14 -0
  142. package/src/lib/form/form.mutations.js +88 -0
  143. package/src/lib/form/form.mutations.js.map +1 -0
  144. package/src/lib/form/form.queries.d.ts +16 -0
  145. package/src/lib/form/form.queries.js +96 -0
  146. package/src/lib/form/form.queries.js.map +1 -0
  147. package/src/lib/form/form.service.d.ts +35 -0
  148. package/src/lib/form/form.service.js +297 -0
  149. package/src/lib/form/form.service.js.map +1 -0
  150. package/src/lib/form/index.js +12 -0
  151. package/src/lib/form/index.js.map +1 -0
  152. package/src/lib/identity/identity-options.d.ts +13 -0
  153. package/src/lib/identity/identity-options.js +20 -0
  154. package/src/lib/identity/identity-options.js.map +1 -0
  155. package/src/lib/identity/identity.module.d.ts +17 -0
  156. package/src/lib/identity/identity.module.js +65 -0
  157. package/src/lib/identity/identity.module.js.map +1 -0
  158. package/src/lib/identity/identity.queries.d.ts +12 -0
  159. package/src/lib/identity/identity.queries.js +79 -0
  160. package/src/lib/identity/identity.queries.js.map +1 -0
  161. package/src/lib/identity/identity.service.d.ts +22 -0
  162. package/src/lib/identity/identity.service.js +141 -0
  163. package/src/lib/identity/identity.service.js.map +1 -0
  164. package/src/lib/identity/index.js +7 -0
  165. package/src/lib/identity/index.js.map +1 -0
  166. package/src/lib/identity/member-base.adapter.d.ts +95 -0
  167. package/src/lib/identity/member-base.adapter.js +137 -0
  168. package/src/lib/identity/member-base.adapter.js.map +1 -0
  169. package/src/lib/identity/member-metadata-cache.entity.d.ts +8 -0
  170. package/src/lib/identity/member-metadata-cache.entity.js +39 -0
  171. package/src/lib/identity/member-metadata-cache.entity.js.map +1 -0
  172. package/src/lib/identity/member-profile.object.d.ts +8 -0
  173. package/src/lib/identity/member-profile.object.js +37 -0
  174. package/src/lib/identity/member-profile.object.js.map +1 -0
  175. package/src/lib/identity/member-resolver.interface.d.ts +79 -0
  176. package/src/lib/identity/member-resolver.interface.js +19 -0
  177. package/src/lib/identity/member-resolver.interface.js.map +1 -0
  178. package/src/lib/migrations/0000000000001-enable-postgres-extensions.d.ts +6 -0
  179. package/src/lib/migrations/0000000000001-enable-postgres-extensions.js +17 -0
  180. package/src/lib/migrations/0000000000001-enable-postgres-extensions.js.map +1 -0
  181. package/src/lib/migrations/0000000001000-identity-organization-foundation.d.ts +6 -0
  182. package/src/lib/migrations/{0000000001000-identity-organization-foundation.ts → 0000000001000-identity-organization-foundation.js} +29 -38
  183. package/src/lib/migrations/0000000001000-identity-organization-foundation.js.map +1 -0
  184. package/src/lib/migrations/0000000002000-form-builder-foundation.d.ts +6 -0
  185. package/src/lib/migrations/{0000000002000-form-builder-foundation.ts → 0000000002000-form-builder-foundation.js} +21 -22
  186. package/src/lib/migrations/0000000002000-form-builder-foundation.js.map +1 -0
  187. package/src/lib/migrations/0000000003000-approval-template-foundation.d.ts +6 -0
  188. package/src/lib/migrations/{0000000003000-approval-template-foundation.ts → 0000000003000-approval-template-foundation.js} +21 -24
  189. package/src/lib/migrations/0000000003000-approval-template-foundation.js.map +1 -0
  190. package/src/lib/migrations/0000000004000-workflow-engine-foundation.d.ts +6 -0
  191. package/src/lib/migrations/{0000000004000-workflow-engine-foundation.ts → 0000000004000-workflow-engine-foundation.js} +34 -46
  192. package/src/lib/migrations/0000000004000-workflow-engine-foundation.js.map +1 -0
  193. package/src/lib/migrations/0000000005000-delegation-rules.d.ts +6 -0
  194. package/src/lib/migrations/{0000000005000-delegation-rules.ts → 0000000005000-delegation-rules.js} +19 -20
  195. package/src/lib/migrations/0000000005000-delegation-rules.js.map +1 -0
  196. package/src/lib/migrations/0000000006000-notifications-sla.d.ts +6 -0
  197. package/src/lib/migrations/{0000000006000-notifications-sla.ts → 0000000006000-notifications-sla.js} +23 -26
  198. package/src/lib/migrations/0000000006000-notifications-sla.js.map +1 -0
  199. package/src/lib/migrations/0000000007000-signatures-attachments.d.ts +6 -0
  200. package/src/lib/migrations/{0000000007000-signatures-attachments.ts → 0000000007000-signatures-attachments.js} +27 -28
  201. package/src/lib/migrations/0000000007000-signatures-attachments.js.map +1 -0
  202. package/src/lib/migrations/0000000008000-approval-template-categories.d.ts +6 -0
  203. package/src/lib/migrations/{0000000008000-approval-template-categories.ts → 0000000008000-approval-template-categories.js} +25 -28
  204. package/src/lib/migrations/0000000008000-approval-template-categories.js.map +1 -0
  205. package/src/lib/migrations/0000000009000-task-candidates.d.ts +6 -0
  206. package/src/lib/migrations/{0000000009000-task-candidates.ts → 0000000009000-task-candidates.js} +23 -26
  207. package/src/lib/migrations/0000000009000-task-candidates.js.map +1 -0
  208. package/src/lib/migrations/0000000010000-notification-delivery-state.d.ts +6 -0
  209. package/src/lib/migrations/{0000000010000-notification-delivery-state.ts → 0000000010000-notification-delivery-state.js} +17 -16
  210. package/src/lib/migrations/0000000010000-notification-delivery-state.js.map +1 -0
  211. package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.d.ts +6 -0
  212. package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.js +22 -0
  213. package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.js.map +1 -0
  214. package/src/lib/migrations/0000000012000-notification-sla-idempotency.d.ts +6 -0
  215. package/src/lib/migrations/0000000012000-notification-sla-idempotency.js +21 -0
  216. package/src/lib/migrations/0000000012000-notification-sla-idempotency.js.map +1 -0
  217. package/src/lib/migrations/0000000013000-workflow-query-indexes.d.ts +6 -0
  218. package/src/lib/migrations/0000000013000-workflow-query-indexes.js +80 -0
  219. package/src/lib/migrations/0000000013000-workflow-query-indexes.js.map +1 -0
  220. package/src/lib/migrations/index.d.ts +16 -0
  221. package/src/lib/migrations/index.js +49 -0
  222. package/src/lib/migrations/index.js.map +1 -0
  223. package/src/lib/notification/dto/notification-preference.input.d.ts +9 -0
  224. package/src/lib/notification/dto/notification-preference.input.js +53 -0
  225. package/src/lib/notification/dto/notification-preference.input.js.map +1 -0
  226. package/src/lib/notification/index.js +11 -0
  227. package/src/lib/notification/index.js.map +1 -0
  228. package/src/lib/notification/notification-delivery-scheduler.service.d.ts +13 -0
  229. package/src/lib/notification/notification-delivery-scheduler.service.js +53 -0
  230. package/src/lib/notification/notification-delivery-scheduler.service.js.map +1 -0
  231. package/src/lib/notification/notification-delivery.service.d.ts +23 -0
  232. package/src/lib/notification/notification-delivery.service.js +245 -0
  233. package/src/lib/notification/notification-delivery.service.js.map +1 -0
  234. package/src/lib/notification/notification-dispatcher.token.d.ts +7 -0
  235. package/src/lib/notification/notification-dispatcher.token.js +5 -0
  236. package/src/lib/notification/notification-dispatcher.token.js.map +1 -0
  237. package/src/lib/notification/notification-options.d.ts +215 -0
  238. package/src/lib/notification/notification-options.js +128 -0
  239. package/src/lib/notification/notification-options.js.map +1 -0
  240. package/src/lib/notification/notification-options.module.d.ts +23 -0
  241. package/src/lib/notification/notification-options.module.js +41 -0
  242. package/src/lib/notification/notification-options.module.js.map +1 -0
  243. package/src/lib/notification/notification-preference.entity.d.ts +10 -0
  244. package/src/lib/notification/notification-preference.entity.js +50 -0
  245. package/src/lib/notification/notification-preference.entity.js.map +1 -0
  246. package/src/lib/notification/notification-sla-scheduler.service.d.ts +13 -0
  247. package/src/lib/notification/notification-sla-scheduler.service.js +51 -0
  248. package/src/lib/notification/notification-sla-scheduler.service.js.map +1 -0
  249. package/src/lib/notification/notification-template.d.ts +13 -0
  250. package/src/lib/notification/notification-template.js +61 -0
  251. package/src/lib/notification/notification-template.js.map +1 -0
  252. package/src/lib/notification/notification.entity.d.ts +23 -0
  253. package/src/lib/notification/notification.entity.js +122 -0
  254. package/src/lib/notification/notification.entity.js.map +1 -0
  255. package/src/lib/notification/notification.enums.d.ts +24 -0
  256. package/src/lib/notification/notification.enums.js +45 -0
  257. package/src/lib/notification/notification.enums.js.map +1 -0
  258. package/src/lib/notification/notification.module.d.ts +2 -0
  259. package/src/lib/notification/notification.module.js +45 -0
  260. package/src/lib/notification/notification.module.js.map +1 -0
  261. package/src/lib/notification/notification.mutations.d.ts +11 -0
  262. package/src/lib/notification/notification.mutations.js +64 -0
  263. package/src/lib/notification/notification.mutations.js.map +1 -0
  264. package/src/lib/notification/notification.queries.d.ts +11 -0
  265. package/src/lib/notification/notification.queries.js +77 -0
  266. package/src/lib/notification/notification.queries.js.map +1 -0
  267. package/src/lib/notification/notification.service.d.ts +81 -0
  268. package/src/lib/notification/notification.service.js +621 -0
  269. package/src/lib/notification/notification.service.js.map +1 -0
  270. package/src/lib/organization/dto/manager-resolution.input.d.ts +18 -0
  271. package/src/lib/organization/dto/manager-resolution.input.js +107 -0
  272. package/src/lib/organization/dto/manager-resolution.input.js.map +1 -0
  273. package/src/lib/organization/dto/membership.input.d.ts +16 -0
  274. package/src/lib/organization/dto/membership.input.js +99 -0
  275. package/src/lib/organization/dto/membership.input.js.map +1 -0
  276. package/src/lib/organization/dto/org-unit.input.d.ts +24 -0
  277. package/src/lib/organization/dto/org-unit.input.js +119 -0
  278. package/src/lib/organization/dto/org-unit.input.js.map +1 -0
  279. package/src/lib/organization/dto/position.input.d.ts +13 -0
  280. package/src/lib/organization/dto/position.input.js +70 -0
  281. package/src/lib/organization/dto/position.input.js.map +1 -0
  282. package/src/lib/organization/index.js +16 -0
  283. package/src/lib/organization/index.js.map +1 -0
  284. package/src/lib/organization/json-metadata.d.ts +1 -0
  285. package/src/lib/organization/json-metadata.js +14 -0
  286. package/src/lib/organization/json-metadata.js.map +1 -0
  287. package/src/lib/organization/manager-resolution.entity.d.ts +11 -0
  288. package/src/lib/organization/manager-resolution.entity.js +55 -0
  289. package/src/lib/organization/manager-resolution.entity.js.map +1 -0
  290. package/src/lib/organization/membership.entity.d.ts +11 -0
  291. package/src/lib/organization/membership.entity.js +60 -0
  292. package/src/lib/organization/membership.entity.js.map +1 -0
  293. package/src/lib/organization/org-unit-tree-commit-result.object.d.ts +4 -0
  294. package/src/lib/organization/org-unit-tree-commit-result.object.js +17 -0
  295. package/src/lib/organization/org-unit-tree-commit-result.object.js.map +1 -0
  296. package/src/lib/organization/org-unit.entity.d.ts +13 -0
  297. package/src/lib/organization/org-unit.entity.js +64 -0
  298. package/src/lib/organization/org-unit.entity.js.map +1 -0
  299. package/src/lib/organization/organization-summary.object.d.ts +6 -0
  300. package/src/lib/organization/organization-summary.object.js +28 -0
  301. package/src/lib/organization/organization-summary.object.js.map +1 -0
  302. package/src/lib/organization/organization.enums.d.ts +11 -0
  303. package/src/lib/organization/organization.enums.js +22 -0
  304. package/src/lib/organization/organization.enums.js.map +1 -0
  305. package/src/lib/organization/organization.module.d.ts +2 -0
  306. package/src/lib/organization/organization.module.js +35 -0
  307. package/src/lib/organization/organization.module.js.map +1 -0
  308. package/src/lib/organization/organization.mutations.d.ts +26 -0
  309. package/src/lib/organization/organization.mutations.js +148 -0
  310. package/src/lib/organization/organization.mutations.js.map +1 -0
  311. package/src/lib/organization/organization.queries.d.ts +23 -0
  312. package/src/lib/organization/organization.queries.js +202 -0
  313. package/src/lib/organization/organization.queries.js.map +1 -0
  314. package/src/lib/organization/organization.service.d.ts +102 -0
  315. package/src/lib/organization/organization.service.js +751 -0
  316. package/src/lib/organization/organization.service.js.map +1 -0
  317. package/src/lib/organization/position.entity.d.ts +9 -0
  318. package/src/lib/organization/position.entity.js +48 -0
  319. package/src/lib/organization/position.entity.js.map +1 -0
  320. package/src/lib/organization/resolved-manager.object.d.ts +4 -0
  321. package/src/lib/organization/resolved-manager.object.js +20 -0
  322. package/src/lib/organization/resolved-manager.object.js.map +1 -0
  323. package/src/lib/signature/index.js +8 -0
  324. package/src/lib/signature/index.js.map +1 -0
  325. package/src/lib/signature/signature-options.d.ts +33 -0
  326. package/src/lib/signature/signature-options.js +51 -0
  327. package/src/lib/signature/signature-options.js.map +1 -0
  328. package/src/lib/signature/signature-verification.object.d.ts +6 -0
  329. package/src/lib/signature/signature-verification.object.js +28 -0
  330. package/src/lib/signature/signature-verification.object.js.map +1 -0
  331. package/src/lib/signature/signature.entity.d.ts +16 -0
  332. package/src/lib/signature/signature.entity.js +88 -0
  333. package/src/lib/signature/signature.entity.js.map +1 -0
  334. package/src/lib/signature/signature.module.d.ts +11 -0
  335. package/src/lib/signature/signature.module.js +60 -0
  336. package/src/lib/signature/signature.module.js.map +1 -0
  337. package/src/lib/signature/signature.queries.d.ts +11 -0
  338. package/src/lib/signature/signature.queries.js +46 -0
  339. package/src/lib/signature/signature.queries.js.map +1 -0
  340. package/src/lib/signature/signature.service.d.ts +25 -0
  341. package/src/lib/signature/signature.service.js +124 -0
  342. package/src/lib/signature/signature.service.js.map +1 -0
  343. package/src/lib/template/approval-template-category.entity.d.ts +9 -0
  344. package/src/lib/template/approval-template-category.entity.js +49 -0
  345. package/src/lib/template/approval-template-category.entity.js.map +1 -0
  346. package/src/lib/template/approval-template-version.entity.d.ts +21 -0
  347. package/src/lib/template/approval-template-version.entity.js +106 -0
  348. package/src/lib/template/approval-template-version.entity.js.map +1 -0
  349. package/src/lib/template/approval-template.entity.d.ts +14 -0
  350. package/src/lib/template/approval-template.entity.js +74 -0
  351. package/src/lib/template/approval-template.entity.js.map +1 -0
  352. package/src/lib/template/dto/approval-template.input.d.ts +36 -0
  353. package/src/lib/template/dto/approval-template.input.js +187 -0
  354. package/src/lib/template/dto/approval-template.input.js.map +1 -0
  355. package/src/lib/template/index.js +12 -0
  356. package/src/lib/template/index.js.map +1 -0
  357. package/src/lib/template/template.enums.d.ts +14 -0
  358. package/src/lib/template/template.enums.js +31 -0
  359. package/src/lib/template/template.enums.js.map +1 -0
  360. package/src/lib/template/template.module.d.ts +2 -0
  361. package/src/lib/template/template.module.js +33 -0
  362. package/src/lib/template/template.module.js.map +1 -0
  363. package/src/lib/template/template.mutations.d.ts +20 -0
  364. package/src/lib/template/template.mutations.js +139 -0
  365. package/src/lib/template/template.mutations.js.map +1 -0
  366. package/src/lib/template/template.queries.d.ts +16 -0
  367. package/src/lib/template/template.queries.js +133 -0
  368. package/src/lib/template/template.queries.js.map +1 -0
  369. package/src/lib/template/template.service.d.ts +64 -0
  370. package/src/lib/template/template.service.js +521 -0
  371. package/src/lib/template/template.service.js.map +1 -0
  372. package/src/lib/template/workflow-definition.validator.d.ts +9 -0
  373. package/src/lib/template/workflow-definition.validator.js +362 -0
  374. package/src/lib/template/workflow-definition.validator.js.map +1 -0
  375. package/src/lib/testing/cel-js.jest.d.ts +15 -0
  376. package/src/lib/testing/cel-js.jest.js +27 -0
  377. package/src/lib/testing/cel-js.jest.js.map +1 -0
  378. package/src/lib/workflow-engine/activity-log.entity.d.ts +12 -0
  379. package/src/lib/workflow-engine/activity-log.entity.js +62 -0
  380. package/src/lib/workflow-engine/activity-log.entity.js.map +1 -0
  381. package/src/lib/workflow-engine/approval-instance-page-info.object.d.ts +8 -0
  382. package/src/lib/workflow-engine/approval-instance-page-info.object.js +36 -0
  383. package/src/lib/workflow-engine/approval-instance-page-info.object.js.map +1 -0
  384. package/src/lib/workflow-engine/approval-instance.entity.d.ts +22 -0
  385. package/src/lib/workflow-engine/approval-instance.entity.js +113 -0
  386. package/src/lib/workflow-engine/approval-instance.entity.js.map +1 -0
  387. package/src/lib/workflow-engine/dto/cancel-approval-instance.input.d.ts +5 -0
  388. package/src/lib/workflow-engine/dto/cancel-approval-instance.input.js +29 -0
  389. package/src/lib/workflow-engine/dto/cancel-approval-instance.input.js.map +1 -0
  390. package/src/lib/workflow-engine/dto/decide-task.input.d.ts +9 -0
  391. package/src/lib/workflow-engine/dto/decide-task.input.js +47 -0
  392. package/src/lib/workflow-engine/dto/decide-task.input.js.map +1 -0
  393. package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.d.ts +6 -0
  394. package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.js +34 -0
  395. package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.js.map +1 -0
  396. package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.d.ts +6 -0
  397. package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.js +34 -0
  398. package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.js.map +1 -0
  399. package/src/lib/workflow-engine/dto/submit-approval-instance.input.d.ts +7 -0
  400. package/src/lib/workflow-engine/dto/submit-approval-instance.input.js +40 -0
  401. package/src/lib/workflow-engine/dto/submit-approval-instance.input.js.map +1 -0
  402. package/src/lib/workflow-engine/index.js +24 -0
  403. package/src/lib/workflow-engine/index.js.map +1 -0
  404. package/src/lib/workflow-engine/task-candidate.entity.d.ts +14 -0
  405. package/src/lib/workflow-engine/task-candidate.entity.js +72 -0
  406. package/src/lib/workflow-engine/task-candidate.entity.js.map +1 -0
  407. package/src/lib/workflow-engine/task-decision.entity.d.ts +12 -0
  408. package/src/lib/workflow-engine/task-decision.entity.js +60 -0
  409. package/src/lib/workflow-engine/task-decision.entity.js.map +1 -0
  410. package/src/lib/workflow-engine/task.entity.d.ts +20 -0
  411. package/src/lib/workflow-engine/task.entity.js +109 -0
  412. package/src/lib/workflow-engine/task.entity.js.map +1 -0
  413. package/src/lib/workflow-engine/workflow-condition-evaluator.d.ts +5 -0
  414. package/src/lib/workflow-engine/workflow-condition-evaluator.js +107 -0
  415. package/src/lib/workflow-engine/workflow-condition-evaluator.js.map +1 -0
  416. package/src/lib/workflow-engine/workflow-dashboard-summary.object.d.ts +8 -0
  417. package/src/lib/workflow-engine/workflow-dashboard-summary.object.js +36 -0
  418. package/src/lib/workflow-engine/workflow-dashboard-summary.object.js.map +1 -0
  419. package/src/lib/workflow-engine/workflow-dry-run.object.d.ts +21 -0
  420. package/src/lib/workflow-engine/workflow-dry-run.object.js +86 -0
  421. package/src/lib/workflow-engine/workflow-dry-run.object.js.map +1 -0
  422. package/src/lib/workflow-engine/workflow-engine.enums.d.ts +58 -0
  423. package/src/lib/workflow-engine/workflow-engine.enums.js +95 -0
  424. package/src/lib/workflow-engine/workflow-engine.enums.js.map +1 -0
  425. package/src/lib/workflow-engine/workflow-engine.module.d.ts +9 -0
  426. package/src/lib/workflow-engine/workflow-engine.module.js +76 -0
  427. package/src/lib/workflow-engine/workflow-engine.module.js.map +1 -0
  428. package/src/lib/workflow-engine/workflow-engine.mutations.d.ts +19 -0
  429. package/src/lib/workflow-engine/workflow-engine.mutations.js +106 -0
  430. package/src/lib/workflow-engine/workflow-engine.mutations.js.map +1 -0
  431. package/src/lib/workflow-engine/workflow-engine.queries.d.ts +29 -0
  432. package/src/lib/workflow-engine/workflow-engine.queries.js +225 -0
  433. package/src/lib/workflow-engine/workflow-engine.queries.js.map +1 -0
  434. package/src/lib/workflow-engine/workflow-engine.service.d.ts +145 -0
  435. package/src/lib/workflow-engine/workflow-engine.service.js +2785 -0
  436. package/src/lib/workflow-engine/workflow-engine.service.js.map +1 -0
  437. package/src/lib/workflow-engine/{workflow-engine.tokens.ts → workflow-engine.tokens.d.ts} +3 -9
  438. package/src/lib/workflow-engine/workflow-engine.tokens.js +5 -0
  439. package/src/lib/workflow-engine/workflow-engine.tokens.js.map +1 -0
  440. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.d.ts +18 -0
  441. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.js +39 -0
  442. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.js.map +1 -0
  443. package/src/lib/workflow-engine/workflow-token.entity.d.ts +10 -0
  444. package/src/lib/workflow-engine/workflow-token.entity.js +50 -0
  445. package/src/lib/workflow-engine/workflow-token.entity.js.map +1 -0
  446. package/eslint.config.mjs +0 -20
  447. package/jest.config.cts +0 -15
  448. package/project.json +0 -58
  449. package/src/lib/attachment/attachment-options.spec.ts +0 -45
  450. package/src/lib/attachment/attachment-options.ts +0 -130
  451. package/src/lib/attachment/attachment-storage.provider.spec.ts +0 -79
  452. package/src/lib/attachment/attachment-storage.provider.ts +0 -60
  453. package/src/lib/attachment/attachment.controller.ts +0 -39
  454. package/src/lib/attachment/attachment.entity.ts +0 -59
  455. package/src/lib/attachment/attachment.module.ts +0 -149
  456. package/src/lib/attachment/attachment.mutations.ts +0 -22
  457. package/src/lib/attachment/attachment.queries.ts +0 -65
  458. package/src/lib/attachment/attachment.service.spec.ts +0 -319
  459. package/src/lib/attachment/attachment.service.ts +0 -477
  460. package/src/lib/attachment/dto/upload-attachment.input.ts +0 -60
  461. package/src/lib/bpm/bpm-root.module.spec.ts +0 -138
  462. package/src/lib/bpm/bpm-root.module.ts +0 -320
  463. package/src/lib/bpm-auth/bpm-auth-context.extractor.ts +0 -106
  464. package/src/lib/bpm-auth/bpm-auth-context.ts +0 -40
  465. package/src/lib/bpm-auth/bpm-auth.authorization.ts +0 -80
  466. package/src/lib/bpm-auth/bpm-auth.decorators.ts +0 -19
  467. package/src/lib/bpm-auth/bpm-auth.guard.ts +0 -31
  468. package/src/lib/bpm-auth/bpm-auth.module.spec.ts +0 -106
  469. package/src/lib/bpm-auth/bpm-auth.module.ts +0 -69
  470. package/src/lib/bpm-auth/bpm-auth.options.ts +0 -21
  471. package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.ts +0 -55
  472. package/src/lib/common/filters/all-exceptions.filter.ts +0 -138
  473. package/src/lib/common/iso-duration.ts +0 -31
  474. package/src/lib/condition/condition.module.ts +0 -8
  475. package/src/lib/condition/condition.service.spec.ts +0 -50
  476. package/src/lib/condition/condition.service.ts +0 -141
  477. package/src/lib/database/data-source.ts +0 -7
  478. package/src/lib/database/migration-runner.ts +0 -24
  479. package/src/lib/database/typeorm.config.ts +0 -217
  480. package/src/lib/delegation/delegation-rule.entity.ts +0 -84
  481. package/src/lib/delegation/delegation.enums.ts +0 -21
  482. package/src/lib/delegation/delegation.module.ts +0 -14
  483. package/src/lib/delegation/delegation.mutations.ts +0 -92
  484. package/src/lib/delegation/delegation.queries.ts +0 -111
  485. package/src/lib/delegation/delegation.service.spec.ts +0 -295
  486. package/src/lib/delegation/delegation.service.ts +0 -482
  487. package/src/lib/delegation/dto/delegation-rule.input.ts +0 -125
  488. package/src/lib/form/dto/form-definition.input.ts +0 -73
  489. package/src/lib/form/form-definition-version.entity.ts +0 -66
  490. package/src/lib/form/form-definition.entity.ts +0 -54
  491. package/src/lib/form/form-schema-lint.object.ts +0 -10
  492. package/src/lib/form/form-schema.validator.spec.ts +0 -180
  493. package/src/lib/form/form-schema.validator.ts +0 -538
  494. package/src/lib/form/form.enums.ts +0 -20
  495. package/src/lib/form/form.module.ts +0 -19
  496. package/src/lib/form/form.mutations.ts +0 -68
  497. package/src/lib/form/form.queries.ts +0 -72
  498. package/src/lib/form/form.service.spec.ts +0 -144
  499. package/src/lib/form/form.service.ts +0 -490
  500. package/src/lib/identity/identity-options.ts +0 -41
  501. package/src/lib/identity/identity.module.ts +0 -96
  502. package/src/lib/identity/identity.queries.ts +0 -61
  503. package/src/lib/identity/identity.service.spec.ts +0 -105
  504. package/src/lib/identity/identity.service.ts +0 -200
  505. package/src/lib/identity/member-base.adapter.spec.ts +0 -77
  506. package/src/lib/identity/member-base.adapter.ts +0 -244
  507. package/src/lib/identity/member-metadata-cache.entity.ts +0 -27
  508. package/src/lib/identity/member-profile.object.ts +0 -28
  509. package/src/lib/identity/member-resolver.interface.ts +0 -47
  510. package/src/lib/migrations/0000000000001-enable-postgres-extensions.ts +0 -14
  511. package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.ts +0 -19
  512. package/src/lib/migrations/0000000012000-notification-sla-idempotency.ts +0 -22
  513. package/src/lib/migrations/0000000013000-workflow-query-indexes.ts +0 -113
  514. package/src/lib/migrations/index.ts +0 -47
  515. package/src/lib/notification/dto/notification-preference.input.ts +0 -46
  516. package/src/lib/notification/notification-delivery-scheduler.service.ts +0 -69
  517. package/src/lib/notification/notification-delivery.service.spec.ts +0 -315
  518. package/src/lib/notification/notification-delivery.service.ts +0 -339
  519. package/src/lib/notification/notification-dispatcher.token.ts +0 -13
  520. package/src/lib/notification/notification-options.module.ts +0 -67
  521. package/src/lib/notification/notification-options.spec.ts +0 -93
  522. package/src/lib/notification/notification-options.ts +0 -452
  523. package/src/lib/notification/notification-preference.entity.ts +0 -35
  524. package/src/lib/notification/notification-sla-scheduler.service.ts +0 -66
  525. package/src/lib/notification/notification-template.spec.ts +0 -33
  526. package/src/lib/notification/notification-template.ts +0 -97
  527. package/src/lib/notification/notification.entity.ts +0 -102
  528. package/src/lib/notification/notification.enums.ts +0 -45
  529. package/src/lib/notification/notification.module.ts +0 -37
  530. package/src/lib/notification/notification.mutations.ts +0 -47
  531. package/src/lib/notification/notification.queries.ts +0 -64
  532. package/src/lib/notification/notification.service.spec.ts +0 -412
  533. package/src/lib/notification/notification.service.ts +0 -974
  534. package/src/lib/organization/dto/manager-resolution.input.ts +0 -91
  535. package/src/lib/organization/dto/membership.input.ts +0 -77
  536. package/src/lib/organization/dto/org-unit.input.ts +0 -96
  537. package/src/lib/organization/dto/position.input.ts +0 -50
  538. package/src/lib/organization/json-metadata.ts +0 -15
  539. package/src/lib/organization/manager-resolution.entity.ts +0 -44
  540. package/src/lib/organization/membership.entity.ts +0 -50
  541. package/src/lib/organization/org-unit-tree-commit-result.object.ts +0 -8
  542. package/src/lib/organization/org-unit.entity.ts +0 -53
  543. package/src/lib/organization/organization-summary.object.ts +0 -16
  544. package/src/lib/organization/organization.enums.ts +0 -19
  545. package/src/lib/organization/organization.module.ts +0 -27
  546. package/src/lib/organization/organization.mutations.ts +0 -115
  547. package/src/lib/organization/organization.queries.ts +0 -188
  548. package/src/lib/organization/organization.service.spec.ts +0 -760
  549. package/src/lib/organization/organization.service.ts +0 -1216
  550. package/src/lib/organization/position.entity.ts +0 -39
  551. package/src/lib/organization/resolved-manager.object.ts +0 -10
  552. package/src/lib/signature/signature-options.spec.ts +0 -60
  553. package/src/lib/signature/signature-options.ts +0 -120
  554. package/src/lib/signature/signature-verification.object.ts +0 -16
  555. package/src/lib/signature/signature.entity.ts +0 -62
  556. package/src/lib/signature/signature.module.ts +0 -80
  557. package/src/lib/signature/signature.queries.ts +0 -37
  558. package/src/lib/signature/signature.service.spec.ts +0 -134
  559. package/src/lib/signature/signature.service.ts +0 -205
  560. package/src/lib/template/approval-template-category.entity.ts +0 -40
  561. package/src/lib/template/approval-template-version.entity.ts +0 -82
  562. package/src/lib/template/approval-template.entity.ts +0 -64
  563. package/src/lib/template/dto/approval-template.input.ts +0 -147
  564. package/src/lib/template/template.enums.ts +0 -30
  565. package/src/lib/template/template.module.ts +0 -25
  566. package/src/lib/template/template.mutations.ts +0 -106
  567. package/src/lib/template/template.queries.ts +0 -119
  568. package/src/lib/template/template.service.spec.ts +0 -476
  569. package/src/lib/template/template.service.ts +0 -820
  570. package/src/lib/template/workflow-definition.validator.spec.ts +0 -595
  571. package/src/lib/template/workflow-definition.validator.ts +0 -539
  572. package/src/lib/testing/cel-js.jest.ts +0 -46
  573. package/src/lib/workflow-engine/activity-log.entity.ts +0 -48
  574. package/src/lib/workflow-engine/approval-instance-page-info.object.ts +0 -22
  575. package/src/lib/workflow-engine/approval-instance.entity.ts +0 -86
  576. package/src/lib/workflow-engine/dto/cancel-approval-instance.input.ts +0 -18
  577. package/src/lib/workflow-engine/dto/decide-task.input.ts +0 -33
  578. package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.ts +0 -22
  579. package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.ts +0 -22
  580. package/src/lib/workflow-engine/dto/submit-approval-instance.input.ts +0 -27
  581. package/src/lib/workflow-engine/task-candidate.entity.ts +0 -56
  582. package/src/lib/workflow-engine/task-decision.entity.ts +0 -43
  583. package/src/lib/workflow-engine/task.entity.ts +0 -85
  584. package/src/lib/workflow-engine/workflow-condition-evaluator.ts +0 -168
  585. package/src/lib/workflow-engine/workflow-dashboard-summary.object.ts +0 -22
  586. package/src/lib/workflow-engine/workflow-dry-run.object.ts +0 -58
  587. package/src/lib/workflow-engine/workflow-engine.enums.ts +0 -99
  588. package/src/lib/workflow-engine/workflow-engine.module.ts +0 -75
  589. package/src/lib/workflow-engine/workflow-engine.mutations.ts +0 -85
  590. package/src/lib/workflow-engine/workflow-engine.queries.ts +0 -229
  591. package/src/lib/workflow-engine/workflow-engine.service.spec.ts +0 -2689
  592. package/src/lib/workflow-engine/workflow-engine.service.ts +0 -4707
  593. package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.ts +0 -69
  594. package/src/lib/workflow-engine/workflow-token.entity.ts +0 -40
  595. package/tsconfig.json +0 -24
  596. package/tsconfig.lib.json +0 -16
  597. package/tsconfig.spec.json +0 -16
  598. /package/src/{index.ts → index.d.ts} +0 -0
  599. /package/src/lib/attachment/{index.ts → index.d.ts} +0 -0
  600. /package/src/lib/bpm/{index.ts → index.d.ts} +0 -0
  601. /package/src/lib/bpm-auth/{index.ts → index.d.ts} +0 -0
  602. /package/src/lib/common/{index.ts → index.d.ts} +0 -0
  603. /package/src/lib/condition/{index.ts → index.d.ts} +0 -0
  604. /package/src/lib/database/{index.ts → index.d.ts} +0 -0
  605. /package/src/lib/delegation/{index.ts → index.d.ts} +0 -0
  606. /package/src/lib/form/{index.ts → index.d.ts} +0 -0
  607. /package/src/lib/identity/{index.ts → index.d.ts} +0 -0
  608. /package/src/lib/notification/{index.ts → index.d.ts} +0 -0
  609. /package/src/lib/organization/{index.ts → index.d.ts} +0 -0
  610. /package/src/lib/signature/{index.ts → index.d.ts} +0 -0
  611. /package/src/lib/template/{index.ts → index.d.ts} +0 -0
  612. /package/src/lib/workflow-engine/{index.ts → index.d.ts} +0 -0
@@ -1,72 +0,0 @@
1
- import { Args, Int, Query, Resolver } from '@nestjs/graphql';
2
- import { BPMAuthenticated } from '../bpm-auth';
3
- import { FormDefinitionEntity } from './form-definition.entity';
4
- import { FormDefinitionVersionEntity } from './form-definition-version.entity';
5
- import { FormService } from './form.service';
6
- import { LintFormSchemaInput } from './dto/form-definition.input';
7
- import { FormDefinitionListStatusEnum } from './form.enums';
8
- import { FormSchemaLintResultObject } from './form-schema-lint.object';
9
-
10
- @Resolver()
11
- @BPMAuthenticated()
12
- export class FormQueries {
13
- constructor(private readonly formService: FormService) {}
14
-
15
- @Query(() => [FormDefinitionEntity])
16
- async formDefinitions(
17
- @Args('page', { nullable: true, type: () => Int })
18
- page?: number | null,
19
- @Args('pageSize', { nullable: true, type: () => Int })
20
- pageSize?: number | null,
21
- @Args('status', {
22
- nullable: true,
23
- type: () => FormDefinitionListStatusEnum,
24
- })
25
- status?: FormDefinitionListStatusEnum | null,
26
- ): Promise<readonly FormDefinitionEntity[]> {
27
- return this.formService.listFormDefinitions({
28
- page: page ?? undefined,
29
- pageSize: pageSize ?? undefined,
30
- status: status ?? undefined,
31
- });
32
- }
33
-
34
- @Query(() => Int)
35
- async formDefinitionCount(
36
- @Args('status', {
37
- nullable: true,
38
- type: () => FormDefinitionListStatusEnum,
39
- })
40
- status?: FormDefinitionListStatusEnum | null,
41
- ): Promise<number> {
42
- return this.formService.countFormDefinitions(status ?? undefined);
43
- }
44
-
45
- @Query(() => FormDefinitionEntity)
46
- async formDefinition(
47
- @Args('id', { type: () => String }) id: string,
48
- ): Promise<FormDefinitionEntity> {
49
- return this.formService.getFormDefinition(id);
50
- }
51
-
52
- @Query(() => [FormDefinitionVersionEntity])
53
- async formDefinitionVersions(
54
- @Args('formDefinitionId', { type: () => String }) formDefinitionId: string,
55
- ): Promise<readonly FormDefinitionVersionEntity[]> {
56
- return this.formService.listFormDefinitionVersions(formDefinitionId);
57
- }
58
-
59
- @Query(() => FormDefinitionVersionEntity)
60
- async formDefinitionVersion(
61
- @Args('id', { type: () => String }) id: string,
62
- ): Promise<FormDefinitionVersionEntity> {
63
- return this.formService.getFormDefinitionVersion(id);
64
- }
65
-
66
- @Query(() => FormSchemaLintResultObject)
67
- lintFormSchema(
68
- @Args('input') input: LintFormSchemaInput,
69
- ): FormSchemaLintResultObject {
70
- return this.formService.lintFormSchema(input);
71
- }
72
- }
@@ -1,144 +0,0 @@
1
- import { ObjectLiteral, Repository } from 'typeorm';
2
- import { FormDefinitionEntity } from './form-definition.entity';
3
- import { FormDefinitionVersionEntity } from './form-definition-version.entity';
4
- import { FormDefinitionListStatusEnum } from './form.enums';
5
- import { FormService } from './form.service';
6
-
7
- describe('FormService', () => {
8
- it('applies backend pagination when listing form definitions and counts active records', async (): Promise<void> => {
9
- const forms = Array.from({ length: 13 }, (_, index) =>
10
- createFormDefinition(`form-${index + 1}`),
11
- );
12
- const find = jest.fn(
13
- ({
14
- skip = 0,
15
- take = 10,
16
- }: {
17
- readonly skip?: number;
18
- readonly take?: number;
19
- }): Promise<readonly FormDefinitionEntity[]> =>
20
- Promise.resolve(forms.slice(skip, skip + take)),
21
- );
22
- const count = jest.fn((): Promise<number> => Promise.resolve(forms.length));
23
- const service = new FormService(
24
- {
25
- count,
26
- find,
27
- } as unknown as Repository<FormDefinitionEntity>,
28
- createRepository<FormDefinitionVersionEntity>(),
29
- );
30
-
31
- const pageTwo = await service.listFormDefinitions({
32
- page: 2,
33
- pageSize: 5,
34
- });
35
- const totalCount = await service.countFormDefinitions();
36
-
37
- expect(find).toHaveBeenCalledWith(
38
- expect.objectContaining({ skip: 5, take: 5 }),
39
- );
40
- expect(pageTwo.map((form) => form.id)).toEqual([
41
- 'form-6',
42
- 'form-7',
43
- 'form-8',
44
- 'form-9',
45
- 'form-10',
46
- ]);
47
- expect(totalCount).toBe(13);
48
- });
49
-
50
- it('filters form definitions by derived publication status', async (): Promise<void> => {
51
- const find = jest.fn(
52
- (): Promise<readonly FormDefinitionEntity[]> => Promise.resolve([]),
53
- );
54
- const count = jest.fn((): Promise<number> => Promise.resolve(0));
55
- const service = new FormService(
56
- {
57
- count,
58
- find,
59
- } as unknown as Repository<FormDefinitionEntity>,
60
- createRepository<FormDefinitionVersionEntity>(),
61
- );
62
-
63
- await service.listFormDefinitions({
64
- status: FormDefinitionListStatusEnum.PUBLISHED,
65
- });
66
- await service.countFormDefinitions(FormDefinitionListStatusEnum.DRAFT);
67
-
68
- expect(find).toHaveBeenCalledWith(
69
- expect.objectContaining({
70
- where: expect.objectContaining({
71
- currentVersionId: expect.any(Object),
72
- deletedAt: expect.any(Object),
73
- }),
74
- }),
75
- );
76
- expect(count).toHaveBeenCalledWith(
77
- expect.objectContaining({
78
- where: expect.objectContaining({
79
- currentVersionId: expect.any(Object),
80
- deletedAt: expect.any(Object),
81
- }),
82
- }),
83
- );
84
- });
85
-
86
- it('hydrates current version summary when listing form definitions', async (): Promise<void> => {
87
- const publishedForm = Object.assign(createFormDefinition('form-1'), {
88
- currentVersionId: 'version-1',
89
- });
90
- const find = jest.fn(
91
- (): Promise<readonly FormDefinitionEntity[]> =>
92
- Promise.resolve([publishedForm]),
93
- );
94
- const versionCreatedAt = new Date('2026-05-10T01:00:00.000Z');
95
- const versionPublishedAt = new Date('2026-05-10T02:00:00.000Z');
96
- const findBy = jest.fn(
97
- (): Promise<readonly FormDefinitionVersionEntity[]> =>
98
- Promise.resolve([
99
- Object.assign(new FormDefinitionVersionEntity(), {
100
- createdAt: versionCreatedAt,
101
- id: 'version-1',
102
- publishedAt: versionPublishedAt,
103
- version: 3,
104
- }),
105
- ]),
106
- );
107
- const service = new FormService(
108
- {
109
- find,
110
- } as unknown as Repository<FormDefinitionEntity>,
111
- {
112
- findBy,
113
- } as unknown as Repository<FormDefinitionVersionEntity>,
114
- );
115
-
116
- const definitions = await service.listFormDefinitions();
117
-
118
- expect(definitions[0]).toMatchObject({
119
- currentVersionCreatedAt: versionCreatedAt,
120
- currentVersionNumber: 3,
121
- currentVersionPublishedAt: versionPublishedAt,
122
- });
123
- expect(findBy).toHaveBeenCalledWith({
124
- id: expect.any(Object),
125
- });
126
- });
127
- });
128
-
129
- function createFormDefinition(id: string): FormDefinitionEntity {
130
- return Object.assign(new FormDefinitionEntity(), {
131
- createdAt: new Date('2026-05-10T00:00:00.000Z'),
132
- createdByMemberId: null,
133
- currentVersionId: null,
134
- deletedAt: null,
135
- description: null,
136
- id,
137
- name: `表單 ${id}`,
138
- updatedAt: new Date('2026-05-10T00:00:00.000Z'),
139
- });
140
- }
141
-
142
- function createRepository<TEntity extends ObjectLiteral>(): Repository<TEntity> {
143
- return {} as Repository<TEntity>;
144
- }
@@ -1,490 +0,0 @@
1
- import {
2
- BadRequestException,
3
- ConflictException,
4
- Injectable,
5
- NotFoundException,
6
- } from '@nestjs/common';
7
- import { InjectRepository } from '@nestjs/typeorm';
8
- import { FindOptionsWhere, In, IsNull, Not, Repository } from 'typeorm';
9
- import { FormDefinitionEntity } from './form-definition.entity';
10
- import { FormDefinitionVersionEntity } from './form-definition-version.entity';
11
- import {
12
- CreateFormDefinitionInput,
13
- LintFormSchemaInput,
14
- UpdateFormDefinitionDraftInput,
15
- UpdateFormDefinitionInput,
16
- } from './dto/form-definition.input';
17
- import {
18
- FormDefinitionListStatusEnum,
19
- FormDefinitionVersionStatusEnum,
20
- } from './form.enums';
21
- import { FormSchemaLintResultObject } from './form-schema-lint.object';
22
- import {
23
- EMPTY_FORM_SCHEMA,
24
- EMPTY_FORM_UI_SCHEMA,
25
- lintFormSchemaJson,
26
- parseAndValidateFormSchemas,
27
- } from './form-schema.validator';
28
-
29
- interface MaxVersionRow {
30
- readonly maxVersion?: number | string | null;
31
- }
32
-
33
- interface ListFormDefinitionsOptions {
34
- readonly page?: number;
35
- readonly pageSize?: number;
36
- readonly status?: FormDefinitionListStatusEnum;
37
- }
38
-
39
- @Injectable()
40
- export class FormService {
41
- constructor(
42
- @InjectRepository(FormDefinitionEntity)
43
- private readonly formDefinitionRepository: Repository<FormDefinitionEntity>,
44
- @InjectRepository(FormDefinitionVersionEntity)
45
- private readonly formDefinitionVersionRepository: Repository<FormDefinitionVersionEntity>,
46
- ) {}
47
-
48
- async createFormDefinition(
49
- input: CreateFormDefinitionInput,
50
- ): Promise<FormDefinitionEntity> {
51
- const schemas = this.parseSchemasOrThrow(
52
- input.schemaJson,
53
- input.uiSchemaJson,
54
- );
55
-
56
- return this.formDefinitionRepository.manager.transaction(
57
- async (manager): Promise<FormDefinitionEntity> => {
58
- const definitionRepository =
59
- manager.getRepository(FormDefinitionEntity);
60
- const versionRepository = manager.getRepository(
61
- FormDefinitionVersionEntity,
62
- );
63
- const definition = await definitionRepository.save(
64
- definitionRepository.create({
65
- createdByMemberId: input.createdByMemberId,
66
- currentVersionId: null,
67
- description: input.description,
68
- name: input.name,
69
- }),
70
- );
71
-
72
- await versionRepository.save(
73
- versionRepository.create({
74
- archivedAt: null,
75
- formDefinitionId: definition.id,
76
- publishedAt: null,
77
- publishedByMemberId: null,
78
- schema: schemas.schema,
79
- status: FormDefinitionVersionStatusEnum.DRAFT,
80
- uiSchema: schemas.uiSchema,
81
- version: 1,
82
- }),
83
- );
84
-
85
- return definition;
86
- },
87
- );
88
- }
89
-
90
- async updateFormDefinition(
91
- input: UpdateFormDefinitionInput,
92
- ): Promise<FormDefinitionEntity> {
93
- const existing = await this.getFormDefinitionOrThrow(input.id);
94
- const next = this.formDefinitionRepository.merge(existing, {
95
- description: input.description ?? existing.description,
96
- name: input.name ?? existing.name,
97
- });
98
-
99
- return this.formDefinitionRepository.save(next);
100
- }
101
-
102
- async listFormDefinitions(
103
- options: ListFormDefinitionsOptions = {},
104
- ): Promise<readonly FormDefinitionEntity[]> {
105
- const isPaginated =
106
- typeof options.page === 'number' || typeof options.pageSize === 'number';
107
- const normalizedPageSize = isPaginated
108
- ? normalizePageSize(options.pageSize ?? 10)
109
- : undefined;
110
-
111
- const definitions = await this.formDefinitionRepository.find({
112
- order: { updatedAt: 'DESC', createdAt: 'DESC' },
113
- ...(normalizedPageSize
114
- ? {
115
- skip: (normalizePage(options.page ?? 1) - 1) * normalizedPageSize,
116
- take: normalizedPageSize,
117
- }
118
- : {}),
119
- where: createFormDefinitionWhere(options.status),
120
- });
121
-
122
- return this.hydrateCurrentVersions(definitions);
123
- }
124
-
125
- async countFormDefinitions(
126
- status?: FormDefinitionListStatusEnum,
127
- ): Promise<number> {
128
- return this.formDefinitionRepository.count({
129
- where: createFormDefinitionWhere(status),
130
- });
131
- }
132
-
133
- async getFormDefinition(id: string): Promise<FormDefinitionEntity> {
134
- const definition = await this.getFormDefinitionOrThrow(id);
135
-
136
- return this.hydrateCurrentVersion(definition);
137
- }
138
-
139
- async listFormDefinitionVersions(
140
- formDefinitionId: string,
141
- ): Promise<readonly FormDefinitionVersionEntity[]> {
142
- await this.getFormDefinitionOrThrow(formDefinitionId);
143
-
144
- return this.formDefinitionVersionRepository.find({
145
- order: { version: 'DESC' },
146
- where: { formDefinitionId },
147
- });
148
- }
149
-
150
- async getFormDefinitionVersion(
151
- id: string,
152
- ): Promise<FormDefinitionVersionEntity> {
153
- return this.getFormDefinitionVersionOrThrow(id);
154
- }
155
-
156
- async updateFormDefinitionDraft(
157
- input: UpdateFormDefinitionDraftInput,
158
- ): Promise<FormDefinitionVersionEntity> {
159
- const existing = await this.getFormDefinitionVersionOrThrow(
160
- input.versionId,
161
- );
162
-
163
- if (existing.status !== FormDefinitionVersionStatusEnum.DRAFT) {
164
- throw new ConflictException(
165
- 'Only draft form definition versions can be updated',
166
- );
167
- }
168
-
169
- const schemas = this.parseSchemasOrThrow(
170
- input.schemaJson,
171
- input.uiSchemaJson,
172
- );
173
- const next = this.formDefinitionVersionRepository.merge(existing, {
174
- schema: schemas.schema,
175
- uiSchema: schemas.uiSchema,
176
- });
177
-
178
- return this.formDefinitionVersionRepository.save(next);
179
- }
180
-
181
- async forkFormDefinition(
182
- formDefinitionId: string,
183
- ): Promise<FormDefinitionVersionEntity> {
184
- const definition = await this.getFormDefinitionOrThrow(formDefinitionId);
185
- const existingDraft = await this.formDefinitionVersionRepository.findOne({
186
- where: {
187
- formDefinitionId: definition.id,
188
- status: FormDefinitionVersionStatusEnum.DRAFT,
189
- },
190
- });
191
-
192
- if (existingDraft) {
193
- throw new ConflictException(
194
- 'A draft form definition version already exists',
195
- );
196
- }
197
-
198
- const source = definition.currentVersionId
199
- ? await this.getFormDefinitionVersionOrThrow(definition.currentVersionId)
200
- : null;
201
- const nextVersion = await this.readNextVersionNumber(definition.id);
202
-
203
- return this.formDefinitionVersionRepository.save(
204
- this.formDefinitionVersionRepository.create({
205
- archivedAt: null,
206
- formDefinitionId: definition.id,
207
- publishedAt: null,
208
- publishedByMemberId: null,
209
- schema: source?.schema ?? EMPTY_FORM_SCHEMA,
210
- status: FormDefinitionVersionStatusEnum.DRAFT,
211
- uiSchema: source?.uiSchema ?? EMPTY_FORM_UI_SCHEMA,
212
- version: nextVersion,
213
- }),
214
- );
215
- }
216
-
217
- async publishFormDefinitionVersion(
218
- versionId: string,
219
- publishedByMemberId?: string,
220
- ): Promise<FormDefinitionVersionEntity> {
221
- const version = await this.getFormDefinitionVersionOrThrow(versionId);
222
-
223
- if (version.status !== FormDefinitionVersionStatusEnum.DRAFT) {
224
- throw new ConflictException(
225
- 'Only draft form definition versions can be published',
226
- );
227
- }
228
-
229
- this.parseSchemasOrThrow(
230
- JSON.stringify(version.schema),
231
- JSON.stringify(version.uiSchema),
232
- );
233
-
234
- return this.formDefinitionRepository.manager.transaction(
235
- async (manager): Promise<FormDefinitionVersionEntity> => {
236
- const definitionRepository =
237
- manager.getRepository(FormDefinitionEntity);
238
- const versionRepository = manager.getRepository(
239
- FormDefinitionVersionEntity,
240
- );
241
- const definition = await definitionRepository.findOne({
242
- where: { deletedAt: IsNull(), id: version.formDefinitionId },
243
- });
244
-
245
- if (!definition) {
246
- throw new NotFoundException(
247
- `Form definition ${version.formDefinitionId} was not found`,
248
- );
249
- }
250
-
251
- if (definition.currentVersionId) {
252
- await versionRepository.update(
253
- { id: definition.currentVersionId },
254
- {
255
- archivedAt: new Date(),
256
- status: FormDefinitionVersionStatusEnum.ARCHIVED,
257
- },
258
- );
259
- }
260
-
261
- const published = versionRepository.merge(version, {
262
- archivedAt: null,
263
- publishedAt: new Date(),
264
- publishedByMemberId: publishedByMemberId ?? null,
265
- status: FormDefinitionVersionStatusEnum.PUBLISHED,
266
- });
267
- const saved = await versionRepository.save(published);
268
- await definitionRepository.save(
269
- definitionRepository.merge(definition, {
270
- currentVersionId: saved.id,
271
- }),
272
- );
273
-
274
- return saved;
275
- },
276
- );
277
- }
278
-
279
- async rollbackFormDefinitionVersion(
280
- versionId: string,
281
- ): Promise<FormDefinitionVersionEntity> {
282
- const target = await this.getFormDefinitionVersionOrThrow(versionId);
283
-
284
- if (target.status === FormDefinitionVersionStatusEnum.DRAFT) {
285
- throw new ConflictException(
286
- 'Draft form definition versions cannot be rollback targets',
287
- );
288
- }
289
-
290
- return this.formDefinitionRepository.manager.transaction(
291
- async (manager): Promise<FormDefinitionVersionEntity> => {
292
- const definitionRepository =
293
- manager.getRepository(FormDefinitionEntity);
294
- const versionRepository = manager.getRepository(
295
- FormDefinitionVersionEntity,
296
- );
297
- const definition = await definitionRepository.findOne({
298
- where: { deletedAt: IsNull(), id: target.formDefinitionId },
299
- });
300
-
301
- if (!definition) {
302
- throw new NotFoundException(
303
- `Form definition ${target.formDefinitionId} was not found`,
304
- );
305
- }
306
-
307
- if (
308
- definition.currentVersionId &&
309
- definition.currentVersionId !== target.id
310
- ) {
311
- await versionRepository.update(
312
- { id: definition.currentVersionId },
313
- {
314
- archivedAt: new Date(),
315
- status: FormDefinitionVersionStatusEnum.ARCHIVED,
316
- },
317
- );
318
- }
319
-
320
- const restored = versionRepository.merge(target, {
321
- archivedAt: null,
322
- status: FormDefinitionVersionStatusEnum.PUBLISHED,
323
- });
324
- const saved = await versionRepository.save(restored);
325
- await definitionRepository.save(
326
- definitionRepository.merge(definition, {
327
- currentVersionId: saved.id,
328
- }),
329
- );
330
-
331
- return saved;
332
- },
333
- );
334
- }
335
-
336
- lintFormSchema(input: LintFormSchemaInput): FormSchemaLintResultObject {
337
- const result = lintFormSchemaJson(input.schemaJson, input.uiSchemaJson);
338
-
339
- return {
340
- errors: result.errors,
341
- valid: result.valid,
342
- };
343
- }
344
-
345
- private async getFormDefinitionOrThrow(
346
- id: string,
347
- ): Promise<FormDefinitionEntity> {
348
- const entity = await this.formDefinitionRepository.findOne({
349
- where: { deletedAt: IsNull(), id },
350
- });
351
-
352
- if (!entity) {
353
- throw new NotFoundException(`Form definition ${id} was not found`);
354
- }
355
-
356
- return entity;
357
- }
358
-
359
- private async hydrateCurrentVersions(
360
- definitions: readonly FormDefinitionEntity[],
361
- ): Promise<readonly FormDefinitionEntity[]> {
362
- const currentVersionIds = definitions.flatMap((definition) =>
363
- definition.currentVersionId ? [definition.currentVersionId] : [],
364
- );
365
-
366
- if (currentVersionIds.length === 0) {
367
- return definitions;
368
- }
369
-
370
- const versions = await this.formDefinitionVersionRepository.findBy({
371
- id: In(currentVersionIds),
372
- });
373
- const versionById = new Map(
374
- versions.map((version) => [version.id, version]),
375
- );
376
-
377
- return definitions.map((definition) =>
378
- applyCurrentVersionSummary(
379
- definition,
380
- definition.currentVersionId
381
- ? (versionById.get(definition.currentVersionId) ?? null)
382
- : null,
383
- ),
384
- );
385
- }
386
-
387
- private async hydrateCurrentVersion(
388
- definition: FormDefinitionEntity,
389
- ): Promise<FormDefinitionEntity> {
390
- if (!definition.currentVersionId) {
391
- return definition;
392
- }
393
-
394
- const version = await this.formDefinitionVersionRepository.findOne({
395
- where: { id: definition.currentVersionId },
396
- });
397
-
398
- return applyCurrentVersionSummary(definition, version);
399
- }
400
-
401
- private async getFormDefinitionVersionOrThrow(
402
- id: string,
403
- ): Promise<FormDefinitionVersionEntity> {
404
- const entity = await this.formDefinitionVersionRepository.findOne({
405
- where: { id },
406
- });
407
-
408
- if (!entity) {
409
- throw new NotFoundException(
410
- `Form definition version ${id} was not found`,
411
- );
412
- }
413
-
414
- return entity;
415
- }
416
-
417
- private async readNextVersionNumber(
418
- formDefinitionId: string,
419
- ): Promise<number> {
420
- const row = await this.formDefinitionVersionRepository
421
- .createQueryBuilder('version')
422
- .select('MAX(version.version)', 'maxVersion')
423
- .where('version.form_definition_id = :formDefinitionId', {
424
- formDefinitionId,
425
- })
426
- .getRawOne<MaxVersionRow>();
427
- const maxVersion =
428
- typeof row?.maxVersion === 'number'
429
- ? row.maxVersion
430
- : Number(row?.maxVersion ?? 0);
431
-
432
- return maxVersion + 1;
433
- }
434
-
435
- private parseSchemasOrThrow(
436
- schemaJson: string | null | undefined,
437
- uiSchemaJson: string | null | undefined,
438
- ): ReturnType<typeof parseAndValidateFormSchemas> {
439
- try {
440
- return parseAndValidateFormSchemas(schemaJson, uiSchemaJson);
441
- } catch (error: unknown) {
442
- throw new BadRequestException(
443
- error instanceof Error ? error.message : 'Invalid form schema',
444
- );
445
- }
446
- }
447
- }
448
-
449
- function normalizePage(page: number): number {
450
- return Number.isInteger(page) && page > 0 ? page : 1;
451
- }
452
-
453
- function normalizePageSize(pageSize: number): number {
454
- if (!Number.isInteger(pageSize) || pageSize <= 0) {
455
- return 10;
456
- }
457
-
458
- return Math.min(pageSize, 100);
459
- }
460
-
461
- function createFormDefinitionWhere(
462
- status: FormDefinitionListStatusEnum | undefined,
463
- ): FindOptionsWhere<FormDefinitionEntity> {
464
- if (status === FormDefinitionListStatusEnum.DRAFT) {
465
- return {
466
- currentVersionId: IsNull(),
467
- deletedAt: IsNull(),
468
- };
469
- }
470
-
471
- if (status === FormDefinitionListStatusEnum.PUBLISHED) {
472
- return {
473
- currentVersionId: Not(IsNull()),
474
- deletedAt: IsNull(),
475
- };
476
- }
477
-
478
- return { deletedAt: IsNull() };
479
- }
480
-
481
- function applyCurrentVersionSummary(
482
- definition: FormDefinitionEntity,
483
- version: FormDefinitionVersionEntity | null,
484
- ): FormDefinitionEntity {
485
- return Object.assign(new FormDefinitionEntity(), definition, {
486
- currentVersionCreatedAt: version?.createdAt ?? null,
487
- currentVersionNumber: version?.version ?? null,
488
- currentVersionPublishedAt: version?.publishedAt ?? null,
489
- });
490
- }