@things-factory/worklist 10.1.248 → 10.1.250

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 (724) hide show
  1. package/dist-client/activity-cells.d.ts +21 -0
  2. package/dist-client/activity-cells.js +117 -0
  3. package/dist-client/activity-cells.js.map +1 -0
  4. package/dist-client/activity-state-counts.d.ts +6 -0
  5. package/dist-client/activity-state-counts.js +23 -0
  6. package/dist-client/activity-state-counts.js.map +1 -0
  7. package/dist-client/activity-summary-generator.d.ts +2 -0
  8. package/dist-client/activity-summary-generator.js +155 -0
  9. package/dist-client/activity-summary-generator.js.map +1 -0
  10. package/dist-client/approval-progress.d.ts +27 -0
  11. package/dist-client/approval-progress.js +42 -0
  12. package/dist-client/approval-progress.js.map +1 -0
  13. package/dist-client/bootstrap.d.ts +5 -0
  14. package/dist-client/bootstrap.js +63 -0
  15. package/dist-client/bootstrap.js.map +1 -0
  16. package/dist-client/chip-counts.d.ts +7 -0
  17. package/dist-client/chip-counts.js +11 -0
  18. package/dist-client/chip-counts.js.map +1 -0
  19. package/dist-client/chip-filters.d.ts +60 -0
  20. package/dist-client/chip-filters.js +102 -0
  21. package/dist-client/chip-filters.js.map +1 -0
  22. package/dist-client/components/activity-/bowner-view.d.ts +1 -0
  23. package/dist-client/components/activity-/bowner-view.js +104 -0
  24. package/dist-client/components/activity-/bowner-view.js.map +1 -0
  25. package/dist-client/components/activity-approval-ribon.d.ts +31 -0
  26. package/dist-client/components/activity-approval-ribon.js +103 -0
  27. package/dist-client/components/activity-approval-ribon.js.map +1 -0
  28. package/dist-client/components/activity-fields.d.ts +77 -0
  29. package/dist-client/components/activity-fields.js +424 -0
  30. package/dist-client/components/activity-fields.js.map +1 -0
  31. package/dist-client/components/activity-instance-preview.d.ts +2 -0
  32. package/dist-client/components/activity-instance-preview.js +177 -0
  33. package/dist-client/components/activity-instance-preview.js.map +1 -0
  34. package/dist-client/components/activity-instance-ribon.d.ts +32 -0
  35. package/dist-client/components/activity-instance-ribon.js +91 -0
  36. package/dist-client/components/activity-instance-ribon.js.map +1 -0
  37. package/dist-client/components/activity-intro-view.d.ts +1 -0
  38. package/dist-client/components/activity-intro-view.js +104 -0
  39. package/dist-client/components/activity-intro-view.js.map +1 -0
  40. package/dist-client/components/activity-reporter-view.d.ts +1 -0
  41. package/dist-client/components/activity-reporter-view.js +103 -0
  42. package/dist-client/components/activity-reporter-view.js.map +1 -0
  43. package/dist-client/components/activity-starter-form.d.ts +19 -0
  44. package/dist-client/components/activity-starter-form.js +264 -0
  45. package/dist-client/components/activity-starter-form.js.map +1 -0
  46. package/dist-client/components/activity-thread-ribon.d.ts +38 -0
  47. package/dist-client/components/activity-thread-ribon.js +95 -0
  48. package/dist-client/components/activity-thread-ribon.js.map +1 -0
  49. package/dist-client/components/activity-thread-timeline.d.ts +28 -0
  50. package/dist-client/components/activity-thread-timeline.js +339 -0
  51. package/dist-client/components/activity-thread-timeline.js.map +1 -0
  52. package/dist-client/components/can-pick.d.ts +15 -0
  53. package/dist-client/components/can-pick.js +16 -0
  54. package/dist-client/components/can-pick.js.map +1 -0
  55. package/dist-client/components/decision-content.d.ts +35 -0
  56. package/dist-client/components/decision-content.js +331 -0
  57. package/dist-client/components/decision-content.js.map +1 -0
  58. package/dist-client/components/decision-slots.d.ts +153 -0
  59. package/dist-client/components/decision-slots.js +152 -0
  60. package/dist-client/components/decision-slots.js.map +1 -0
  61. package/dist-client/components/mutation-outcome.d.ts +57 -0
  62. package/dist-client/components/mutation-outcome.js +78 -0
  63. package/dist-client/components/mutation-outcome.js.map +1 -0
  64. package/dist-client/components/say-outcome.d.ts +25 -0
  65. package/dist-client/components/say-outcome.js +51 -0
  66. package/dist-client/components/say-outcome.js.map +1 -0
  67. package/dist-client/components/state-ribon.d.ts +48 -0
  68. package/dist-client/components/state-ribon.js +225 -0
  69. package/dist-client/components/state-ribon.js.map +1 -0
  70. package/dist-client/components/timeline-entries.d.ts +38 -0
  71. package/dist-client/components/timeline-entries.js +62 -0
  72. package/dist-client/components/timeline-entries.js.map +1 -0
  73. package/dist-client/components/work-box-groups.d.ts +25 -0
  74. package/dist-client/components/work-box-groups.js +98 -0
  75. package/dist-client/components/work-box-groups.js.map +1 -0
  76. package/dist-client/due.d.ts +16 -0
  77. package/dist-client/due.js +78 -0
  78. package/dist-client/due.js.map +1 -0
  79. package/dist-client/entity360/person-open-work-section.d.ts +23 -0
  80. package/dist-client/entity360/person-open-work-section.js +79 -0
  81. package/dist-client/entity360/person-open-work-section.js.map +1 -0
  82. package/dist-client/grist-editor/grist-editor-activity-search-key.d.ts +12 -0
  83. package/dist-client/grist-editor/grist-editor-activity-search-key.js +70 -0
  84. package/dist-client/grist-editor/grist-editor-activity-search-key.js.map +1 -0
  85. package/dist-client/grist-editor/grist-renderer-activity-search-key.d.ts +3 -0
  86. package/dist-client/grist-editor/grist-renderer-activity-search-key.js +25 -0
  87. package/dist-client/grist-editor/grist-renderer-activity-search-key.js.map +1 -0
  88. package/dist-client/grist-editor/popup-activity-search-keys-input.d.ts +17 -0
  89. package/dist-client/grist-editor/popup-activity-search-keys-input.js +175 -0
  90. package/dist-client/grist-editor/popup-activity-search-keys-input.js.map +1 -0
  91. package/dist-client/index.d.ts +6 -0
  92. package/dist-client/index.js +7 -0
  93. package/dist-client/index.js.map +1 -0
  94. package/dist-client/my-work-menus.d.ts +90 -0
  95. package/dist-client/my-work-menus.js +20 -0
  96. package/dist-client/my-work-menus.js.map +1 -0
  97. package/dist-client/pages/activity/activity-list-page.d.ts +53 -0
  98. package/dist-client/pages/activity/activity-list-page.js +600 -0
  99. package/dist-client/pages/activity/activity-list-page.js.map +1 -0
  100. package/dist-client/pages/activity/activity-model-item-list.d.ts +24 -0
  101. package/dist-client/pages/activity/activity-model-item-list.js +292 -0
  102. package/dist-client/pages/activity/activity-model-item-list.js.map +1 -0
  103. package/dist-client/pages/activity/activity-page.d.ts +56 -0
  104. package/dist-client/pages/activity/activity-page.js +396 -0
  105. package/dist-client/pages/activity/activity-page.js.map +1 -0
  106. package/dist-client/pages/activity/activity-partial-view.d.ts +13 -0
  107. package/dist-client/pages/activity/activity-partial-view.js +56 -0
  108. package/dist-client/pages/activity/activity-partial-view.js.map +1 -0
  109. package/dist-client/pages/activity/assignee-roles-cell.d.ts +32 -0
  110. package/dist-client/pages/activity/assignee-roles-cell.js +26 -0
  111. package/dist-client/pages/activity/assignee-roles-cell.js.map +1 -0
  112. package/dist-client/pages/activity/starter-list-page.d.ts +31 -0
  113. package/dist-client/pages/activity/starter-list-page.js +172 -0
  114. package/dist-client/pages/activity/starter-list-page.js.map +1 -0
  115. package/dist-client/pages/activity-approval/activity-approval-importer.d.ts +23 -0
  116. package/dist-client/pages/activity-approval/activity-approval-importer.js +94 -0
  117. package/dist-client/pages/activity-approval/activity-approval-importer.js.map +1 -0
  118. package/dist-client/pages/activity-approval/activity-approval-list-page.d.ts +55 -0
  119. package/dist-client/pages/activity-approval/activity-approval-list-page.js +253 -0
  120. package/dist-client/pages/activity-approval/activity-approval-list-page.js.map +1 -0
  121. package/dist-client/pages/activity-approval/activity-approval-page.d.ts +158 -0
  122. package/dist-client/pages/activity-approval/activity-approval-page.js +876 -0
  123. package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -0
  124. package/dist-client/pages/activity-approval/approval-gate.d.ts +29 -0
  125. package/dist-client/pages/activity-approval/approval-gate.js +21 -0
  126. package/dist-client/pages/activity-approval/approval-gate.js.map +1 -0
  127. package/dist-client/pages/activity-catalog/activity-catalog-page.d.ts +31 -0
  128. package/dist-client/pages/activity-catalog/activity-catalog-page.js +420 -0
  129. package/dist-client/pages/activity-catalog/activity-catalog-page.js.map +1 -0
  130. package/dist-client/pages/activity-catalog/activity-detail-actions.d.ts +34 -0
  131. package/dist-client/pages/activity-catalog/activity-detail-actions.js +18 -0
  132. package/dist-client/pages/activity-catalog/activity-detail-actions.js.map +1 -0
  133. package/dist-client/pages/activity-catalog/activity-detail-page.d.ts +90 -0
  134. package/dist-client/pages/activity-catalog/activity-detail-page.js +525 -0
  135. package/dist-client/pages/activity-catalog/activity-detail-page.js.map +1 -0
  136. package/dist-client/pages/activity-catalog/activity-guide.d.ts +16 -0
  137. package/dist-client/pages/activity-catalog/activity-guide.js +5 -0
  138. package/dist-client/pages/activity-catalog/activity-guide.js.map +1 -0
  139. package/dist-client/pages/activity-catalog/activity-panels.d.ts +80 -0
  140. package/dist-client/pages/activity-catalog/activity-panels.js +53 -0
  141. package/dist-client/pages/activity-catalog/activity-panels.js.map +1 -0
  142. package/dist-client/pages/activity-catalog/activity-stage.d.ts +31 -0
  143. package/dist-client/pages/activity-catalog/activity-stage.js +44 -0
  144. package/dist-client/pages/activity-catalog/activity-stage.js.map +1 -0
  145. package/dist-client/pages/activity-instance/activity-instance-list-page.d.ts +42 -0
  146. package/dist-client/pages/activity-instance/activity-instance-list-page.js +306 -0
  147. package/dist-client/pages/activity-instance/activity-instance-list-page.js.map +1 -0
  148. package/dist-client/pages/activity-instance/activity-instance-search-page.d.ts +69 -0
  149. package/dist-client/pages/activity-instance/activity-instance-search-page.js +309 -0
  150. package/dist-client/pages/activity-instance/activity-instance-search-page.js.map +1 -0
  151. package/dist-client/pages/activity-instance/activity-instance-start-page.d.ts +54 -0
  152. package/dist-client/pages/activity-instance/activity-instance-start-page.js +557 -0
  153. package/dist-client/pages/activity-instance/activity-instance-start-page.js.map +1 -0
  154. package/dist-client/pages/activity-instance/activity-instance-view.d.ts +36 -0
  155. package/dist-client/pages/activity-instance/activity-instance-view.js +495 -0
  156. package/dist-client/pages/activity-instance/activity-instance-view.js.map +1 -0
  157. package/dist-client/pages/activity-instance/discard-offer.d.ts +11 -0
  158. package/dist-client/pages/activity-instance/discard-offer.js +11 -0
  159. package/dist-client/pages/activity-instance/discard-offer.js.map +1 -0
  160. package/dist-client/pages/activity-stats/activity-stats-importer.d.ts +23 -0
  161. package/dist-client/pages/activity-stats/activity-stats-importer.js +94 -0
  162. package/dist-client/pages/activity-stats/activity-stats-importer.js.map +1 -0
  163. package/dist-client/pages/activity-stats/activity-stats-list-page.d.ts +55 -0
  164. package/dist-client/pages/activity-stats/activity-stats-list-page.js +253 -0
  165. package/dist-client/pages/activity-stats/activity-stats-list-page.js.map +1 -0
  166. package/dist-client/pages/activity-store/activity-store-page.d.ts +41 -0
  167. package/dist-client/pages/activity-store/activity-store-page.js +210 -0
  168. package/dist-client/pages/activity-store/activity-store-page.js.map +1 -0
  169. package/dist-client/pages/activity-supervisor/reporter-list-page.d.ts +30 -0
  170. package/dist-client/pages/activity-supervisor/reporter-list-page.js +190 -0
  171. package/dist-client/pages/activity-supervisor/reporter-list-page.js.map +1 -0
  172. package/dist-client/pages/activity-template/activity-template-importer.d.ts +11 -0
  173. package/dist-client/pages/activity-template/activity-template-importer.js +98 -0
  174. package/dist-client/pages/activity-template/activity-template-importer.js.map +1 -0
  175. package/dist-client/pages/activity-template/activity-template-list-page.d.ts +53 -0
  176. package/dist-client/pages/activity-template/activity-template-list-page.js +377 -0
  177. package/dist-client/pages/activity-template/activity-template-list-page.js.map +1 -0
  178. package/dist-client/pages/activity-template/activity-template-model-item-list.d.ts +1 -0
  179. package/dist-client/pages/activity-template/activity-template-model-item-list.js +41 -0
  180. package/dist-client/pages/activity-template/activity-template-model-item-list.js.map +1 -0
  181. package/dist-client/pages/activity-thread/activity-thread-importer.d.ts +11 -0
  182. package/dist-client/pages/activity-thread/activity-thread-importer.js +96 -0
  183. package/dist-client/pages/activity-thread/activity-thread-importer.js.map +1 -0
  184. package/dist-client/pages/activity-thread/activity-thread-list-page.d.ts +52 -0
  185. package/dist-client/pages/activity-thread/activity-thread-list-page.js +248 -0
  186. package/dist-client/pages/activity-thread/activity-thread-list-page.js.map +1 -0
  187. package/dist-client/pages/activity-thread/activity-thread-page.d.ts +91 -0
  188. package/dist-client/pages/activity-thread/activity-thread-page.js +594 -0
  189. package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -0
  190. package/dist-client/pages/activity-thread/activity-thread-view-page.d.ts +56 -0
  191. package/dist-client/pages/activity-thread/activity-thread-view-page.js +386 -0
  192. package/dist-client/pages/activity-thread/activity-thread-view-page.js.map +1 -0
  193. package/dist-client/pages/activity-thread/activity-thread-view.d.ts +31 -0
  194. package/dist-client/pages/activity-thread/activity-thread-view.js +134 -0
  195. package/dist-client/pages/activity-thread/activity-thread-view.js.map +1 -0
  196. package/dist-client/pages/activity-thread/thread-sections.d.ts +34 -0
  197. package/dist-client/pages/activity-thread/thread-sections.js +36 -0
  198. package/dist-client/pages/activity-thread/thread-sections.js.map +1 -0
  199. package/dist-client/pages/approval-progress/approval-progress-page.d.ts +46 -0
  200. package/dist-client/pages/approval-progress/approval-progress-page.js +294 -0
  201. package/dist-client/pages/approval-progress/approval-progress-page.js.map +1 -0
  202. package/dist-client/pages/installable-activity/installable-activity-list-page.d.ts +64 -0
  203. package/dist-client/pages/installable-activity/installable-activity-list-page.js +424 -0
  204. package/dist-client/pages/installable-activity/installable-activity-list-page.js.map +1 -0
  205. package/dist-client/pages/installable-activity/installable-activity-model-item-list.d.ts +1 -0
  206. package/dist-client/pages/installable-activity/installable-activity-model-item-list.js +20 -0
  207. package/dist-client/pages/installable-activity/installable-activity-model-item-list.js.map +1 -0
  208. package/dist-client/pages/todo/approval-done-list-page.d.ts +42 -0
  209. package/dist-client/pages/todo/approval-done-list-page.js +365 -0
  210. package/dist-client/pages/todo/approval-done-list-page.js.map +1 -0
  211. package/dist-client/pages/todo/approval-pending-list-page.d.ts +79 -0
  212. package/dist-client/pages/todo/approval-pending-list-page.js +683 -0
  213. package/dist-client/pages/todo/approval-pending-list-page.js.map +1 -0
  214. package/dist-client/pages/todo/done-list-calendar-page.d.ts +47 -0
  215. package/dist-client/pages/todo/done-list-calendar-page.js +379 -0
  216. package/dist-client/pages/todo/done-list-calendar-page.js.map +1 -0
  217. package/dist-client/pages/todo/draft-list-page.d.ts +64 -0
  218. package/dist-client/pages/todo/draft-list-page.js +404 -0
  219. package/dist-client/pages/todo/draft-list-page.js.map +1 -0
  220. package/dist-client/pages/todo/list-thumbnail.d.ts +25 -0
  221. package/dist-client/pages/todo/list-thumbnail.js +25 -0
  222. package/dist-client/pages/todo/list-thumbnail.js.map +1 -0
  223. package/dist-client/pages/todo/pickable-list-page.d.ts +37 -0
  224. package/dist-client/pages/todo/pickable-list-page.js +271 -0
  225. package/dist-client/pages/todo/pickable-list-page.js.map +1 -0
  226. package/dist-client/pages/todo/todo-list-page.d.ts +66 -0
  227. package/dist-client/pages/todo/todo-list-page.js +503 -0
  228. package/dist-client/pages/todo/todo-list-page.js.map +1 -0
  229. package/dist-client/pages/todo/work-box.d.ts +52 -0
  230. package/dist-client/pages/todo/work-box.js +54 -0
  231. package/dist-client/pages/todo/work-box.js.map +1 -0
  232. package/dist-client/pages/work-door/door-links.d.ts +22 -0
  233. package/dist-client/pages/work-door/door-links.js +20 -0
  234. package/dist-client/pages/work-door/door-links.js.map +1 -0
  235. package/dist-client/pages/work-door/door-sentence.d.ts +75 -0
  236. package/dist-client/pages/work-door/door-sentence.js +107 -0
  237. package/dist-client/pages/work-door/door-sentence.js.map +1 -0
  238. package/dist-client/pages/work-door/door-words.d.ts +48 -0
  239. package/dist-client/pages/work-door/door-words.js +84 -0
  240. package/dist-client/pages/work-door/door-words.js.map +1 -0
  241. package/dist-client/route.d.ts +1 -0
  242. package/dist-client/route.js +80 -0
  243. package/dist-client/route.js.map +1 -0
  244. package/dist-client/templates/activity-approval-context-template.d.ts +3 -0
  245. package/dist-client/templates/activity-approval-context-template.js +105 -0
  246. package/dist-client/templates/activity-approval-context-template.js.map +1 -0
  247. package/dist-client/templates/activity-instance-context-template.d.ts +3 -0
  248. package/dist-client/templates/activity-instance-context-template.js +118 -0
  249. package/dist-client/templates/activity-instance-context-template.js.map +1 -0
  250. package/dist-client/templates/activity-thread-context-template.d.ts +3 -0
  251. package/dist-client/templates/activity-thread-context-template.js +74 -0
  252. package/dist-client/templates/activity-thread-context-template.js.map +1 -0
  253. package/dist-client/templates/context-panel.d.ts +26 -0
  254. package/dist-client/templates/context-panel.js +182 -0
  255. package/dist-client/templates/context-panel.js.map +1 -0
  256. package/dist-client/tsconfig.tsbuildinfo +1 -0
  257. package/dist-client/types/activity-approval.d.ts +36 -0
  258. package/dist-client/types/activity-approval.js +17 -0
  259. package/dist-client/types/activity-approval.js.map +1 -0
  260. package/dist-client/types/activity-instance-type.d.ts +77 -0
  261. package/dist-client/types/activity-instance-type.js +11 -0
  262. package/dist-client/types/activity-instance-type.js.map +1 -0
  263. package/dist-client/types/activity-instance.d.ts +72 -0
  264. package/dist-client/types/activity-instance.js +36 -0
  265. package/dist-client/types/activity-instance.js.map +1 -0
  266. package/dist-client/types/activity-model-type.d.ts +31 -0
  267. package/dist-client/types/activity-model-type.js +18 -0
  268. package/dist-client/types/activity-model-type.js.map +1 -0
  269. package/dist-client/types/activity-search-key-item-type.d.ts +6 -0
  270. package/dist-client/types/activity-search-key-item-type.js +3 -0
  271. package/dist-client/types/activity-search-key-item-type.js.map +1 -0
  272. package/dist-client/types/activity-thread-history.d.ts +28 -0
  273. package/dist-client/types/activity-thread-history.js +7 -0
  274. package/dist-client/types/activity-thread-history.js.map +1 -0
  275. package/dist-client/types/activity-thread-type.d.ts +15 -0
  276. package/dist-client/types/activity-thread-type.js +7 -0
  277. package/dist-client/types/activity-thread-type.js.map +1 -0
  278. package/dist-client/types/activity-thread.d.ts +39 -0
  279. package/dist-client/types/activity-thread.js +18 -0
  280. package/dist-client/types/activity-thread.js.map +1 -0
  281. package/dist-client/types/activity.d.ts +68 -0
  282. package/dist-client/types/activity.js +40 -0
  283. package/dist-client/types/activity.js.map +1 -0
  284. package/dist-client/types/types.d.ts +23 -0
  285. package/dist-client/types/types.js +42 -0
  286. package/dist-client/types/types.js.map +1 -0
  287. package/dist-client/when.d.ts +4 -0
  288. package/dist-client/when.js +72 -0
  289. package/dist-client/when.js.map +1 -0
  290. package/dist-client/work-calendar-sources.d.ts +96 -0
  291. package/dist-client/work-calendar-sources.js +88 -0
  292. package/dist-client/work-calendar-sources.js.map +1 -0
  293. package/dist-server/controllers/activity-approval/_abort.d.ts +5 -0
  294. package/dist-server/controllers/activity-approval/_abort.js +29 -0
  295. package/dist-server/controllers/activity-approval/_abort.js.map +1 -0
  296. package/dist-server/controllers/activity-approval/abort.d.ts +5 -0
  297. package/dist-server/controllers/activity-approval/abort.js +35 -0
  298. package/dist-server/controllers/activity-approval/abort.js.map +1 -0
  299. package/dist-server/controllers/activity-approval/approval-line.d.ts +138 -0
  300. package/dist-server/controllers/activity-approval/approval-line.js +185 -0
  301. package/dist-server/controllers/activity-approval/approval-line.js.map +1 -0
  302. package/dist-server/controllers/activity-approval/approve.d.ts +5 -0
  303. package/dist-server/controllers/activity-approval/approve.js +142 -0
  304. package/dist-server/controllers/activity-approval/approve.js.map +1 -0
  305. package/dist-server/controllers/activity-approval/check-authority.d.ts +8 -0
  306. package/dist-server/controllers/activity-approval/check-authority.js +29 -0
  307. package/dist-server/controllers/activity-approval/check-authority.js.map +1 -0
  308. package/dist-server/controllers/activity-approval/claim.d.ts +42 -0
  309. package/dist-server/controllers/activity-approval/claim.js +77 -0
  310. package/dist-server/controllers/activity-approval/claim.js.map +1 -0
  311. package/dist-server/controllers/activity-approval/create-approval.d.ts +41 -0
  312. package/dist-server/controllers/activity-approval/create-approval.js +85 -0
  313. package/dist-server/controllers/activity-approval/create-approval.js.map +1 -0
  314. package/dist-server/controllers/activity-approval/delegate.d.ts +23 -0
  315. package/dist-server/controllers/activity-approval/delegate.js +113 -0
  316. package/dist-server/controllers/activity-approval/delegate.js.map +1 -0
  317. package/dist-server/controllers/activity-approval/delegation.d.ts +21 -0
  318. package/dist-server/controllers/activity-approval/delegation.js +17 -0
  319. package/dist-server/controllers/activity-approval/delegation.js.map +1 -0
  320. package/dist-server/controllers/activity-approval/opinion.d.ts +10 -0
  321. package/dist-server/controllers/activity-approval/opinion.js +43 -0
  322. package/dist-server/controllers/activity-approval/opinion.js.map +1 -0
  323. package/dist-server/controllers/activity-approval/reject.d.ts +5 -0
  324. package/dist-server/controllers/activity-approval/reject.js +93 -0
  325. package/dist-server/controllers/activity-approval/reject.js.map +1 -0
  326. package/dist-server/controllers/activity-approval/resolve-judgeable-seats.d.ts +21 -0
  327. package/dist-server/controllers/activity-approval/resolve-judgeable-seats.js +60 -0
  328. package/dist-server/controllers/activity-approval/resolve-judgeable-seats.js.map +1 -0
  329. package/dist-server/controllers/activity-approval/save.d.ts +5 -0
  330. package/dist-server/controllers/activity-approval/save.js +56 -0
  331. package/dist-server/controllers/activity-approval/save.js.map +1 -0
  332. package/dist-server/controllers/activity-approval/seat-standing.d.ts +66 -0
  333. package/dist-server/controllers/activity-approval/seat-standing.js +57 -0
  334. package/dist-server/controllers/activity-approval/seat-standing.js.map +1 -0
  335. package/dist-server/controllers/activity-installation/activity-installation-controller.d.ts +79 -0
  336. package/dist-server/controllers/activity-installation/activity-installation-controller.js +99 -0
  337. package/dist-server/controllers/activity-installation/activity-installation-controller.js.map +1 -0
  338. package/dist-server/controllers/activity-installation/call-webhook.d.ts +3 -0
  339. package/dist-server/controllers/activity-installation/call-webhook.js +42 -0
  340. package/dist-server/controllers/activity-installation/call-webhook.js.map +1 -0
  341. package/dist-server/controllers/activity-installation/installable-to-activity.d.ts +77 -0
  342. package/dist-server/controllers/activity-installation/installable-to-activity.js +68 -0
  343. package/dist-server/controllers/activity-installation/installable-to-activity.js.map +1 -0
  344. package/dist-server/controllers/activity-installation/registry-conflict.d.ts +47 -0
  345. package/dist-server/controllers/activity-installation/registry-conflict.js +47 -0
  346. package/dist-server/controllers/activity-installation/registry-conflict.js.map +1 -0
  347. package/dist-server/controllers/activity-instance/abort.d.ts +5 -0
  348. package/dist-server/controllers/activity-instance/abort.js +62 -0
  349. package/dist-server/controllers/activity-instance/abort.js.map +1 -0
  350. package/dist-server/controllers/activity-instance/approval-expectation.d.ts +34 -0
  351. package/dist-server/controllers/activity-instance/approval-expectation.js +18 -0
  352. package/dist-server/controllers/activity-instance/approval-expectation.js.map +1 -0
  353. package/dist-server/controllers/activity-instance/approval-line-input.d.ts +29 -0
  354. package/dist-server/controllers/activity-instance/approval-line-input.js +44 -0
  355. package/dist-server/controllers/activity-instance/approval-line-input.js.map +1 -0
  356. package/dist-server/controllers/activity-instance/assign.d.ts +8 -0
  357. package/dist-server/controllers/activity-instance/assign.js +152 -0
  358. package/dist-server/controllers/activity-instance/assign.js.map +1 -0
  359. package/dist-server/controllers/activity-instance/assignee-input.d.ts +25 -0
  360. package/dist-server/controllers/activity-instance/assignee-input.js +28 -0
  361. package/dist-server/controllers/activity-instance/assignee-input.js.map +1 -0
  362. package/dist-server/controllers/activity-instance/claim-draft.d.ts +17 -0
  363. package/dist-server/controllers/activity-instance/claim-draft.js +30 -0
  364. package/dist-server/controllers/activity-instance/claim-draft.js.map +1 -0
  365. package/dist-server/controllers/activity-instance/discard-draft.d.ts +22 -0
  366. package/dist-server/controllers/activity-instance/discard-draft.js +54 -0
  367. package/dist-server/controllers/activity-instance/discard-draft.js.map +1 -0
  368. package/dist-server/controllers/activity-instance/draft.d.ts +3 -0
  369. package/dist-server/controllers/activity-instance/draft.js +93 -0
  370. package/dist-server/controllers/activity-instance/draft.js.map +1 -0
  371. package/dist-server/controllers/activity-instance/end.d.ts +6 -0
  372. package/dist-server/controllers/activity-instance/end.js +65 -0
  373. package/dist-server/controllers/activity-instance/end.js.map +1 -0
  374. package/dist-server/controllers/activity-instance/entitlement.d.ts +25 -0
  375. package/dist-server/controllers/activity-instance/entitlement.js +110 -0
  376. package/dist-server/controllers/activity-instance/entitlement.js.map +1 -0
  377. package/dist-server/controllers/activity-instance/index.d.ts +6 -0
  378. package/dist-server/controllers/activity-instance/index.js +10 -0
  379. package/dist-server/controllers/activity-instance/index.js.map +1 -0
  380. package/dist-server/controllers/activity-instance/issue.d.ts +3 -0
  381. package/dist-server/controllers/activity-instance/issue.js +272 -0
  382. package/dist-server/controllers/activity-instance/issue.js.map +1 -0
  383. package/dist-server/controllers/activity-instance/pick.d.ts +2 -0
  384. package/dist-server/controllers/activity-instance/pick.js +112 -0
  385. package/dist-server/controllers/activity-instance/pick.js.map +1 -0
  386. package/dist-server/controllers/activity-read/assert-may-read.d.ts +20 -0
  387. package/dist-server/controllers/activity-read/assert-may-read.js +108 -0
  388. package/dist-server/controllers/activity-read/assert-may-read.js.map +1 -0
  389. package/dist-server/controllers/activity-read/participates.d.ts +41 -0
  390. package/dist-server/controllers/activity-read/participates.js +42 -0
  391. package/dist-server/controllers/activity-read/participates.js.map +1 -0
  392. package/dist-server/controllers/activity-thread/_abort.d.ts +5 -0
  393. package/dist-server/controllers/activity-thread/_abort.js +36 -0
  394. package/dist-server/controllers/activity-thread/_abort.js.map +1 -0
  395. package/dist-server/controllers/activity-thread/abort.d.ts +5 -0
  396. package/dist-server/controllers/activity-thread/abort.js +45 -0
  397. package/dist-server/controllers/activity-thread/abort.js.map +1 -0
  398. package/dist-server/controllers/activity-thread/check-authority.d.ts +2 -0
  399. package/dist-server/controllers/activity-thread/check-authority.js +65 -0
  400. package/dist-server/controllers/activity-thread/check-authority.js.map +1 -0
  401. package/dist-server/controllers/activity-thread/delegate.d.ts +7 -0
  402. package/dist-server/controllers/activity-thread/delegate.js +66 -0
  403. package/dist-server/controllers/activity-thread/delegate.js.map +1 -0
  404. package/dist-server/controllers/activity-thread/end.d.ts +6 -0
  405. package/dist-server/controllers/activity-thread/end.js +44 -0
  406. package/dist-server/controllers/activity-thread/end.js.map +1 -0
  407. package/dist-server/controllers/activity-thread/index.d.ts +7 -0
  408. package/dist-server/controllers/activity-thread/index.js +11 -0
  409. package/dist-server/controllers/activity-thread/index.js.map +1 -0
  410. package/dist-server/controllers/activity-thread/restart.d.ts +2 -0
  411. package/dist-server/controllers/activity-thread/restart.js +63 -0
  412. package/dist-server/controllers/activity-thread/restart.js.map +1 -0
  413. package/dist-server/controllers/activity-thread/save.d.ts +3 -0
  414. package/dist-server/controllers/activity-thread/save.js +45 -0
  415. package/dist-server/controllers/activity-thread/save.js.map +1 -0
  416. package/dist-server/controllers/activity-thread/start.d.ts +2 -0
  417. package/dist-server/controllers/activity-thread/start.js +43 -0
  418. package/dist-server/controllers/activity-thread/start.js.map +1 -0
  419. package/dist-server/controllers/activity-thread/submit.d.ts +6 -0
  420. package/dist-server/controllers/activity-thread/submit.js +90 -0
  421. package/dist-server/controllers/activity-thread/submit.js.map +1 -0
  422. package/dist-server/controllers/common.d.ts +34 -0
  423. package/dist-server/controllers/common.js +346 -0
  424. package/dist-server/controllers/common.js.map +1 -0
  425. package/dist-server/controllers/index.d.ts +5 -0
  426. package/dist-server/controllers/index.js +18 -0
  427. package/dist-server/controllers/index.js.map +1 -0
  428. package/dist-server/index.d.ts +6 -0
  429. package/dist-server/index.js +18 -0
  430. package/dist-server/index.js.map +1 -0
  431. package/dist-server/role-tasks.d.ts +2 -0
  432. package/dist-server/role-tasks.js +16 -0
  433. package/dist-server/role-tasks.js.map +1 -0
  434. package/dist-server/routes.d.ts +1 -0
  435. package/dist-server/routes.js +57 -0
  436. package/dist-server/routes.js.map +1 -0
  437. package/dist-server/service/activity/activity-decision-key-item-type.d.ts +206 -0
  438. package/dist-server/service/activity/activity-decision-key-item-type.js +182 -0
  439. package/dist-server/service/activity/activity-decision-key-item-type.js.map +1 -0
  440. package/dist-server/service/activity/activity-history.d.ts +44 -0
  441. package/dist-server/service/activity/activity-history.js +220 -0
  442. package/dist-server/service/activity/activity-history.js.map +1 -0
  443. package/dist-server/service/activity/activity-model-type.d.ts +49 -0
  444. package/dist-server/service/activity/activity-model-type.js +138 -0
  445. package/dist-server/service/activity/activity-model-type.js.map +1 -0
  446. package/dist-server/service/activity/activity-mutation.d.ts +12 -0
  447. package/dist-server/service/activity/activity-mutation.js +416 -0
  448. package/dist-server/service/activity/activity-mutation.js.map +1 -0
  449. package/dist-server/service/activity/activity-query.d.ts +24 -0
  450. package/dist-server/service/activity/activity-query.js +310 -0
  451. package/dist-server/service/activity/activity-query.js.map +1 -0
  452. package/dist-server/service/activity/activity-search-key-item-type.d.ts +6 -0
  453. package/dist-server/service/activity/activity-search-key-item-type.js +28 -0
  454. package/dist-server/service/activity/activity-search-key-item-type.js.map +1 -0
  455. package/dist-server/service/activity/activity-type.d.ts +84 -0
  456. package/dist-server/service/activity/activity-type.js +269 -0
  457. package/dist-server/service/activity/activity-type.js.map +1 -0
  458. package/dist-server/service/activity/activity.d.ts +135 -0
  459. package/dist-server/service/activity/activity.js +328 -0
  460. package/dist-server/service/activity/activity.js.map +1 -0
  461. package/dist-server/service/activity/approval-line-seats.d.ts +12 -0
  462. package/dist-server/service/activity/approval-line-seats.js +68 -0
  463. package/dist-server/service/activity/approval-line-seats.js.map +1 -0
  464. package/dist-server/service/activity/credential-field.d.ts +35 -0
  465. package/dist-server/service/activity/credential-field.js +89 -0
  466. package/dist-server/service/activity/credential-field.js.map +1 -0
  467. package/dist-server/service/activity/decision-key-declaration.d.ts +106 -0
  468. package/dist-server/service/activity/decision-key-declaration.js +181 -0
  469. package/dist-server/service/activity/decision-key-declaration.js.map +1 -0
  470. package/dist-server/service/activity/declaration-guard-subscriber.d.ts +24 -0
  471. package/dist-server/service/activity/declaration-guard-subscriber.js +46 -0
  472. package/dist-server/service/activity/declaration-guard-subscriber.js.map +1 -0
  473. package/dist-server/service/activity/event-subscriber.d.ts +7 -0
  474. package/dist-server/service/activity/event-subscriber.js +21 -0
  475. package/dist-server/service/activity/event-subscriber.js.map +1 -0
  476. package/dist-server/service/activity/freeze-decision-sentences-for.d.ts +11 -0
  477. package/dist-server/service/activity/freeze-decision-sentences-for.js +18 -0
  478. package/dist-server/service/activity/freeze-decision-sentences-for.js.map +1 -0
  479. package/dist-server/service/activity/index.d.ts +9 -0
  480. package/dist-server/service/activity/index.js +13 -0
  481. package/dist-server/service/activity/index.js.map +1 -0
  482. package/dist-server/service/activity/search-key-declaration.d.ts +38 -0
  483. package/dist-server/service/activity/search-key-declaration.js +49 -0
  484. package/dist-server/service/activity/search-key-declaration.js.map +1 -0
  485. package/dist-server/service/activity-approval/activity-approval-mutation.d.ts +8 -0
  486. package/dist-server/service/activity-approval/activity-approval-mutation.js +81 -0
  487. package/dist-server/service/activity-approval/activity-approval-mutation.js.map +1 -0
  488. package/dist-server/service/activity-approval/activity-approval-query.d.ts +42 -0
  489. package/dist-server/service/activity-approval/activity-approval-query.js +391 -0
  490. package/dist-server/service/activity-approval/activity-approval-query.js.map +1 -0
  491. package/dist-server/service/activity-approval/activity-approval-subscription.d.ts +6 -0
  492. package/dist-server/service/activity-approval/activity-approval-subscription.js +39 -0
  493. package/dist-server/service/activity-approval/activity-approval-subscription.js.map +1 -0
  494. package/dist-server/service/activity-approval/activity-approval-type.d.ts +10 -0
  495. package/dist-server/service/activity-approval/activity-approval-type.js +39 -0
  496. package/dist-server/service/activity-approval/activity-approval-type.js.map +1 -0
  497. package/dist-server/service/activity-approval/activity-approval.d.ts +67 -0
  498. package/dist-server/service/activity-approval/activity-approval.js +183 -0
  499. package/dist-server/service/activity-approval/activity-approval.js.map +1 -0
  500. package/dist-server/service/activity-approval/event-subscriber.d.ts +7 -0
  501. package/dist-server/service/activity-approval/event-subscriber.js +46 -0
  502. package/dist-server/service/activity-approval/event-subscriber.js.map +1 -0
  503. package/dist-server/service/activity-approval/index.d.ts +8 -0
  504. package/dist-server/service/activity-approval/index.js +12 -0
  505. package/dist-server/service/activity-approval/index.js.map +1 -0
  506. package/dist-server/service/activity-approval/my-pending-approvals.d.ts +33 -0
  507. package/dist-server/service/activity-approval/my-pending-approvals.js +52 -0
  508. package/dist-server/service/activity-approval/my-pending-approvals.js.map +1 -0
  509. package/dist-server/service/activity-instance/activity-instance-history.d.ts +60 -0
  510. package/dist-server/service/activity-instance/activity-instance-history.js +294 -0
  511. package/dist-server/service/activity-instance/activity-instance-history.js.map +1 -0
  512. package/dist-server/service/activity-instance/activity-instance-mutation.d.ts +16 -0
  513. package/dist-server/service/activity-instance/activity-instance-mutation.js +185 -0
  514. package/dist-server/service/activity-instance/activity-instance-mutation.js.map +1 -0
  515. package/dist-server/service/activity-instance/activity-instance-query.d.ts +27 -0
  516. package/dist-server/service/activity-instance/activity-instance-query.js +386 -0
  517. package/dist-server/service/activity-instance/activity-instance-query.js.map +1 -0
  518. package/dist-server/service/activity-instance/activity-instance-subscription.d.ts +6 -0
  519. package/dist-server/service/activity-instance/activity-instance-subscription.js +39 -0
  520. package/dist-server/service/activity-instance/activity-instance-subscription.js.map +1 -0
  521. package/dist-server/service/activity-instance/activity-instance-type.d.ts +107 -0
  522. package/dist-server/service/activity-instance/activity-instance-type.js +301 -0
  523. package/dist-server/service/activity-instance/activity-instance-type.js.map +1 -0
  524. package/dist-server/service/activity-instance/activity-instance.d.ts +81 -0
  525. package/dist-server/service/activity-instance/activity-instance.js +324 -0
  526. package/dist-server/service/activity-instance/activity-instance.js.map +1 -0
  527. package/dist-server/service/activity-instance/assignee-pool.d.ts +59 -0
  528. package/dist-server/service/activity-instance/assignee-pool.js +99 -0
  529. package/dist-server/service/activity-instance/assignee-pool.js.map +1 -0
  530. package/dist-server/service/activity-instance/draft-list-states.d.ts +39 -0
  531. package/dist-server/service/activity-instance/draft-list-states.js +51 -0
  532. package/dist-server/service/activity-instance/draft-list-states.js.map +1 -0
  533. package/dist-server/service/activity-instance/event-subscriber.d.ts +21 -0
  534. package/dist-server/service/activity-instance/event-subscriber.js +59 -0
  535. package/dist-server/service/activity-instance/event-subscriber.js.map +1 -0
  536. package/dist-server/service/activity-instance/index.d.ts +9 -0
  537. package/dist-server/service/activity-instance/index.js +13 -0
  538. package/dist-server/service/activity-instance/index.js.map +1 -0
  539. package/dist-server/service/activity-instance/request-box.d.ts +2 -0
  540. package/dist-server/service/activity-instance/request-box.js +18 -0
  541. package/dist-server/service/activity-instance/request-box.js.map +1 -0
  542. package/dist-server/service/activity-stats/activity-stats-query.d.ts +9 -0
  543. package/dist-server/service/activity-stats/activity-stats-query.js +230 -0
  544. package/dist-server/service/activity-stats/activity-stats-query.js.map +1 -0
  545. package/dist-server/service/activity-stats/activity-stats-type.d.ts +27 -0
  546. package/dist-server/service/activity-stats/activity-stats-type.js +74 -0
  547. package/dist-server/service/activity-stats/activity-stats-type.js.map +1 -0
  548. package/dist-server/service/activity-stats/event-placement.d.ts +55 -0
  549. package/dist-server/service/activity-stats/event-placement.js +82 -0
  550. package/dist-server/service/activity-stats/event-placement.js.map +1 -0
  551. package/dist-server/service/activity-stats/index.d.ts +2 -0
  552. package/dist-server/service/activity-stats/index.js +6 -0
  553. package/dist-server/service/activity-stats/index.js.map +1 -0
  554. package/dist-server/service/activity-summary/activity-summary-query.d.ts +8 -0
  555. package/dist-server/service/activity-summary/activity-summary-query.js +137 -0
  556. package/dist-server/service/activity-summary/activity-summary-query.js.map +1 -0
  557. package/dist-server/service/activity-summary/activity-summary.d.ts +6 -0
  558. package/dist-server/service/activity-summary/activity-summary.js +28 -0
  559. package/dist-server/service/activity-summary/activity-summary.js.map +1 -0
  560. package/dist-server/service/activity-summary/index.d.ts +5 -0
  561. package/dist-server/service/activity-summary/index.js +9 -0
  562. package/dist-server/service/activity-summary/index.js.map +1 -0
  563. package/dist-server/service/activity-summary/open-work.d.ts +4 -0
  564. package/dist-server/service/activity-summary/open-work.js +51 -0
  565. package/dist-server/service/activity-summary/open-work.js.map +1 -0
  566. package/dist-server/service/activity-summary/person-open-work.d.ts +17 -0
  567. package/dist-server/service/activity-summary/person-open-work.js +68 -0
  568. package/dist-server/service/activity-summary/person-open-work.js.map +1 -0
  569. package/dist-server/service/activity-template/activity-template-history.d.ts +32 -0
  570. package/dist-server/service/activity-template/activity-template-history.js +165 -0
  571. package/dist-server/service/activity-template/activity-template-history.js.map +1 -0
  572. package/dist-server/service/activity-template/activity-template-mutation.d.ts +10 -0
  573. package/dist-server/service/activity-template/activity-template-mutation.js +194 -0
  574. package/dist-server/service/activity-template/activity-template-mutation.js.map +1 -0
  575. package/dist-server/service/activity-template/activity-template-query.d.ts +14 -0
  576. package/dist-server/service/activity-template/activity-template-query.js +112 -0
  577. package/dist-server/service/activity-template/activity-template-query.js.map +1 -0
  578. package/dist-server/service/activity-template/activity-template-type.d.ts +44 -0
  579. package/dist-server/service/activity-template/activity-template-type.js +164 -0
  580. package/dist-server/service/activity-template/activity-template-type.js.map +1 -0
  581. package/dist-server/service/activity-template/activity-template.d.ts +36 -0
  582. package/dist-server/service/activity-template/activity-template.js +154 -0
  583. package/dist-server/service/activity-template/activity-template.js.map +1 -0
  584. package/dist-server/service/activity-template/event-subscriber.d.ts +7 -0
  585. package/dist-server/service/activity-template/event-subscriber.js +21 -0
  586. package/dist-server/service/activity-template/event-subscriber.js.map +1 -0
  587. package/dist-server/service/activity-template/index.d.ts +8 -0
  588. package/dist-server/service/activity-template/index.js +12 -0
  589. package/dist-server/service/activity-template/index.js.map +1 -0
  590. package/dist-server/service/activity-thread/activity-thread-history-query.d.ts +10 -0
  591. package/dist-server/service/activity-thread/activity-thread-history-query.js +69 -0
  592. package/dist-server/service/activity-thread/activity-thread-history-query.js.map +1 -0
  593. package/dist-server/service/activity-thread/activity-thread-history.d.ts +39 -0
  594. package/dist-server/service/activity-thread/activity-thread-history.js +211 -0
  595. package/dist-server/service/activity-thread/activity-thread-history.js.map +1 -0
  596. package/dist-server/service/activity-thread/activity-thread-mutation.d.ts +20 -0
  597. package/dist-server/service/activity-thread/activity-thread-mutation.js +115 -0
  598. package/dist-server/service/activity-thread/activity-thread-mutation.js.map +1 -0
  599. package/dist-server/service/activity-thread/activity-thread-query.d.ts +24 -0
  600. package/dist-server/service/activity-thread/activity-thread-query.js +276 -0
  601. package/dist-server/service/activity-thread/activity-thread-query.js.map +1 -0
  602. package/dist-server/service/activity-thread/activity-thread-subscription.d.ts +6 -0
  603. package/dist-server/service/activity-thread/activity-thread-subscription.js +38 -0
  604. package/dist-server/service/activity-thread/activity-thread-subscription.js.map +1 -0
  605. package/dist-server/service/activity-thread/activity-thread-type.d.ts +15 -0
  606. package/dist-server/service/activity-thread/activity-thread-type.js +50 -0
  607. package/dist-server/service/activity-thread/activity-thread-type.js.map +1 -0
  608. package/dist-server/service/activity-thread/activity-thread.d.ts +47 -0
  609. package/dist-server/service/activity-thread/activity-thread.js +197 -0
  610. package/dist-server/service/activity-thread/activity-thread.js.map +1 -0
  611. package/dist-server/service/activity-thread/event-subscriber.d.ts +13 -0
  612. package/dist-server/service/activity-thread/event-subscriber.js +45 -0
  613. package/dist-server/service/activity-thread/event-subscriber.js.map +1 -0
  614. package/dist-server/service/activity-thread/index.d.ts +10 -0
  615. package/dist-server/service/activity-thread/index.js +14 -0
  616. package/dist-server/service/activity-thread/index.js.map +1 -0
  617. package/dist-server/service/activity-thread/my-open-threads.d.ts +33 -0
  618. package/dist-server/service/activity-thread/my-open-threads.js +85 -0
  619. package/dist-server/service/activity-thread/my-open-threads.js.map +1 -0
  620. package/dist-server/service/activity-thread/todo-order.d.ts +49 -0
  621. package/dist-server/service/activity-thread/todo-order.js +70 -0
  622. package/dist-server/service/activity-thread/todo-order.js.map +1 -0
  623. package/dist-server/service/approval-notice/approval-notice-rules.d.ts +67 -0
  624. package/dist-server/service/approval-notice/approval-notice-rules.js +67 -0
  625. package/dist-server/service/approval-notice/approval-notice-rules.js.map +1 -0
  626. package/dist-server/service/approval-notice/approval-notice.d.ts +11 -0
  627. package/dist-server/service/approval-notice/approval-notice.js +76 -0
  628. package/dist-server/service/approval-notice/approval-notice.js.map +1 -0
  629. package/dist-server/service/approval-progress/approval-progress-query.d.ts +14 -0
  630. package/dist-server/service/approval-progress/approval-progress-query.js +142 -0
  631. package/dist-server/service/approval-progress/approval-progress-query.js.map +1 -0
  632. package/dist-server/service/approval-progress/approval-progress-rule.d.ts +67 -0
  633. package/dist-server/service/approval-progress/approval-progress-rule.js +102 -0
  634. package/dist-server/service/approval-progress/approval-progress-rule.js.map +1 -0
  635. package/dist-server/service/approval-progress/approval-progress-type.d.ts +44 -0
  636. package/dist-server/service/approval-progress/approval-progress-type.js +172 -0
  637. package/dist-server/service/approval-progress/approval-progress-type.js.map +1 -0
  638. package/dist-server/service/approval-progress/index.d.ts +2 -0
  639. package/dist-server/service/approval-progress/index.js +6 -0
  640. package/dist-server/service/approval-progress/index.js.map +1 -0
  641. package/dist-server/service/approval-progress/waiting-on.d.ts +15 -0
  642. package/dist-server/service/approval-progress/waiting-on.js +40 -0
  643. package/dist-server/service/approval-progress/waiting-on.js.map +1 -0
  644. package/dist-server/service/index.d.ts +24 -0
  645. package/dist-server/service/index.js +80 -0
  646. package/dist-server/service/index.js.map +1 -0
  647. package/dist-server/service/installable-activity/activity-readiness.d.ts +58 -0
  648. package/dist-server/service/installable-activity/activity-readiness.js +105 -0
  649. package/dist-server/service/installable-activity/activity-readiness.js.map +1 -0
  650. package/dist-server/service/installable-activity/index.d.ts +6 -0
  651. package/dist-server/service/installable-activity/index.js +10 -0
  652. package/dist-server/service/installable-activity/index.js.map +1 -0
  653. package/dist-server/service/installable-activity/installable-activity-mutation.d.ts +11 -0
  654. package/dist-server/service/installable-activity/installable-activity-mutation.js +83 -0
  655. package/dist-server/service/installable-activity/installable-activity-mutation.js.map +1 -0
  656. package/dist-server/service/installable-activity/installable-activity-query.d.ts +22 -0
  657. package/dist-server/service/installable-activity/installable-activity-query.js +127 -0
  658. package/dist-server/service/installable-activity/installable-activity-query.js.map +1 -0
  659. package/dist-server/service/installable-activity/installable-activity-type.d.ts +5 -0
  660. package/dist-server/service/installable-activity/installable-activity-type.js +21 -0
  661. package/dist-server/service/installable-activity/installable-activity-type.js.map +1 -0
  662. package/dist-server/service/installable-activity/installable-activity.d.ts +92 -0
  663. package/dist-server/service/installable-activity/installable-activity.js +140 -0
  664. package/dist-server/service/installable-activity/installable-activity.js.map +1 -0
  665. package/dist-server/service/nulls-last.d.ts +30 -0
  666. package/dist-server/service/nulls-last.js +37 -0
  667. package/dist-server/service/nulls-last.js.map +1 -0
  668. package/dist-server/service/subscription/roles-of.d.ts +9 -0
  669. package/dist-server/service/subscription/roles-of.js +17 -0
  670. package/dist-server/service/subscription/roles-of.js.map +1 -0
  671. package/dist-server/service/subscription/subscription-filters.d.ts +47 -0
  672. package/dist-server/service/subscription/subscription-filters.js +57 -0
  673. package/dist-server/service/subscription/subscription-filters.js.map +1 -0
  674. package/dist-server/service/work-door/activity-lookup.d.ts +70 -0
  675. package/dist-server/service/work-door/activity-lookup.js +110 -0
  676. package/dist-server/service/work-door/activity-lookup.js.map +1 -0
  677. package/dist-server/service/work-door/approval-line-standing.d.ts +106 -0
  678. package/dist-server/service/work-door/approval-line-standing.js +65 -0
  679. package/dist-server/service/work-door/approval-line-standing.js.map +1 -0
  680. package/dist-server/service/work-door/index.d.ts +15 -0
  681. package/dist-server/service/work-door/index.js +20 -0
  682. package/dist-server/service/work-door/index.js.map +1 -0
  683. package/dist-server/service/work-door/pass-work-door.d.ts +74 -0
  684. package/dist-server/service/work-door/pass-work-door.js +45 -0
  685. package/dist-server/service/work-door/pass-work-door.js.map +1 -0
  686. package/dist-server/service/work-door/work-door-declaration.d.ts +135 -0
  687. package/dist-server/service/work-door/work-door-declaration.js +87 -0
  688. package/dist-server/service/work-door/work-door-declaration.js.map +1 -0
  689. package/dist-server/service/work-door/work-door-event.d.ts +20 -0
  690. package/dist-server/service/work-door/work-door-event.js +25 -0
  691. package/dist-server/service/work-door/work-door-event.js.map +1 -0
  692. package/dist-server/service/work-door/work-door-journal-service.d.ts +47 -0
  693. package/dist-server/service/work-door/work-door-journal-service.js +75 -0
  694. package/dist-server/service/work-door/work-door-journal-service.js.map +1 -0
  695. package/dist-server/service/work-door/work-door-journal.d.ts +30 -0
  696. package/dist-server/service/work-door/work-door-journal.js +94 -0
  697. package/dist-server/service/work-door/work-door-journal.js.map +1 -0
  698. package/dist-server/service/work-door/work-door-not-used.d.ts +39 -0
  699. package/dist-server/service/work-door/work-door-not-used.js +86 -0
  700. package/dist-server/service/work-door/work-door-not-used.js.map +1 -0
  701. package/dist-server/service/work-door/work-door-resolver.d.ts +32 -0
  702. package/dist-server/service/work-door/work-door-resolver.js +152 -0
  703. package/dist-server/service/work-door/work-door-resolver.js.map +1 -0
  704. package/dist-server/service/work-door/work-door-service.d.ts +36 -0
  705. package/dist-server/service/work-door/work-door-service.js +127 -0
  706. package/dist-server/service/work-door/work-door-service.js.map +1 -0
  707. package/dist-server/service/work-door/work-door-type.d.ts +88 -0
  708. package/dist-server/service/work-door/work-door-type.js +206 -0
  709. package/dist-server/service/work-door/work-door-type.js.map +1 -0
  710. package/dist-server/service/work-door/work-door.d.ts +187 -0
  711. package/dist-server/service/work-door/work-door.js +119 -0
  712. package/dist-server/service/work-door/work-door.js.map +1 -0
  713. package/dist-server/tsconfig.tsbuildinfo +1 -0
  714. package/package.json +10 -10
  715. package/shared/approval-step.d.ts +21 -0
  716. package/shared/approval-step.js +55 -0
  717. package/tests/approval-progress-db.test.ts +143 -0
  718. package/things-factory.config.js +1 -0
  719. package/translations/en.json +20 -1
  720. package/translations/es.json +20 -1
  721. package/translations/ja.json +20 -1
  722. package/translations/ko.json +20 -1
  723. package/translations/ms.json +20 -1
  724. package/translations/zh.json +20 -1
@@ -0,0 +1,67 @@
1
+ import type { NoticeWords } from '@things-factory/notification';
2
+ import type { ApprovalLineItem } from '@things-factory/organization';
3
+ /**
4
+ * What happened.
5
+ *
6
+ * - `request` a seat's turn came - the first one on submit, the next one after an approval
7
+ * - `delegated` a seat was handed to someone
8
+ * - `reference` someone was seated to read along
9
+ * - `approved` the last approval ended the case
10
+ * - `rejected` an approver sent it back
11
+ */
12
+ export type ApprovalNoticeKind = 'request' | 'delegated' | 'reference' | 'approved' | 'rejected';
13
+ export declare const APPROVAL_NOTICE_KINDS: readonly ApprovalNoticeKind[];
14
+ /** A notice for the person whose turn it is - the other kinds tell the requester of a judgment. */
15
+ export declare function isTurnNotice(kind: ApprovalNoticeKind): boolean;
16
+ export type NoticePerson = {
17
+ id: string;
18
+ name?: string | null;
19
+ email?: string | null;
20
+ locale?: string | null;
21
+ };
22
+ /**
23
+ * Who is told.
24
+ *
25
+ * A turn reaches the seat: its person, or - for a seat held by a role - everyone holding the role. A judgment
26
+ * reaches the requester. Whoever did the thing is not told of it, and nobody is told twice.
27
+ */
28
+ export declare function noticeReceivers({ kind, approver, roleHolders, requester, actorId }: {
29
+ kind: ApprovalNoticeKind;
30
+ approver?: NoticePerson | null;
31
+ roleHolders?: NoticePerson[] | null;
32
+ requester?: NoticePerson | null;
33
+ actorId?: string | null;
34
+ }): NoticePerson[];
35
+ /**
36
+ * The page the notice opens, relative to the domain - the same pages the worklist lists open.
37
+ *
38
+ * A turn opens the approval. An approved case opens the thread's read-only view; a rejected one opens the thread
39
+ * itself, where the requester revises and raises it again.
40
+ */
41
+ export declare function noticeAddress(kind: ApprovalNoticeKind, { approvalId, threadId }: {
42
+ approvalId: string;
43
+ threadId: string;
44
+ }): string;
45
+ /** Which approval of the line this seat is - references take a place in the line but are not counted. */
46
+ export declare function approvalStep(line: ApprovalLineItem[] | null | undefined, order: number): {
47
+ step: number;
48
+ steps: number;
49
+ } | undefined;
50
+ export type NoticeFacts = {
51
+ kind: ApprovalNoticeKind;
52
+ /** The case as the worklist names it. */
53
+ name: string;
54
+ requester?: string | null;
55
+ /** Who did the thing - the approver who judged, the person who handed a seat on. */
56
+ actor?: string | null;
57
+ step?: number;
58
+ steps?: number;
59
+ };
60
+ export type Translate = (key: string, options?: {
61
+ [name: string]: unknown;
62
+ }) => string;
63
+ /**
64
+ * The sentences, from the worklist translations (`approval-notice.<kind>.*`). Nothing of the request's content goes
65
+ * in: no input, no amount, no comment. The page behind the link shows those to whoever may see them.
66
+ */
67
+ export declare function noticeWords(t: Translate, facts: NoticeFacts): NoticeWords;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APPROVAL_NOTICE_KINDS = void 0;
4
+ exports.isTurnNotice = isTurnNotice;
5
+ exports.noticeReceivers = noticeReceivers;
6
+ exports.noticeAddress = noticeAddress;
7
+ exports.approvalStep = approvalStep;
8
+ exports.noticeWords = noticeWords;
9
+ const approval_line_js_1 = require("../../controllers/activity-approval/approval-line.js");
10
+ exports.APPROVAL_NOTICE_KINDS = ['request', 'delegated', 'reference', 'approved', 'rejected'];
11
+ /** A notice for the person whose turn it is - the other kinds tell the requester of a judgment. */
12
+ function isTurnNotice(kind) {
13
+ return kind === 'request' || kind === 'delegated' || kind === 'reference';
14
+ }
15
+ /**
16
+ * Who is told.
17
+ *
18
+ * A turn reaches the seat: its person, or - for a seat held by a role - everyone holding the role. A judgment
19
+ * reaches the requester. Whoever did the thing is not told of it, and nobody is told twice.
20
+ */
21
+ function noticeReceivers({ kind, approver, roleHolders, requester, actorId }) {
22
+ const candidates = isTurnNotice(kind) ? (approver ? [approver] : roleHolders || []) : requester ? [requester] : [];
23
+ const seen = new Set();
24
+ return candidates.filter(person => {
25
+ if (!person?.id || person.id === actorId || seen.has(person.id))
26
+ return false;
27
+ seen.add(person.id);
28
+ return true;
29
+ });
30
+ }
31
+ /**
32
+ * The page the notice opens, relative to the domain - the same pages the worklist lists open.
33
+ *
34
+ * A turn opens the approval. An approved case opens the thread's read-only view; a rejected one opens the thread
35
+ * itself, where the requester revises and raises it again.
36
+ */
37
+ function noticeAddress(kind, { approvalId, threadId }) {
38
+ if (isTurnNotice(kind))
39
+ return `activity-approval/${approvalId}`;
40
+ return kind === 'approved' ? `activity-thread-view/${threadId}` : `activity-thread/${threadId}`;
41
+ }
42
+ /** Which approval of the line this seat is - references take a place in the line but are not counted. */
43
+ function approvalStep(line, order) {
44
+ const orders = (line || []).map((item, index) => ((0, approval_line_js_1.isApprovalStep)(item) ? index + 1 : 0)).filter(Boolean);
45
+ const step = orders.indexOf(order) + 1;
46
+ return step ? { step, steps: orders.length } : undefined;
47
+ }
48
+ /**
49
+ * The sentences, from the worklist translations (`approval-notice.<kind>.*`). Nothing of the request's content goes
50
+ * in: no input, no amount, no comment. The page behind the link shows those to whoever may see them.
51
+ */
52
+ function noticeWords(t, facts) {
53
+ const values = {
54
+ name: facts.name,
55
+ requester: facts.requester || '-',
56
+ actor: facts.actor || '-',
57
+ step: facts.step ?? '-',
58
+ steps: facts.steps ?? '-'
59
+ };
60
+ return {
61
+ subject: t(`approval-notice.${facts.kind}.subject`, values),
62
+ body: t(`approval-notice.${facts.kind}.body`, values),
63
+ action: t(isTurnNotice(facts.kind) ? 'approval-notice.open-approval' : 'approval-notice.open-request', values),
64
+ note: t(isTurnNotice(facts.kind) ? 'approval-notice.see-approval-box' : 'approval-notice.see-request-box', values)
65
+ };
66
+ }
67
+ //# sourceMappingURL=approval-notice-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-notice-rules.js","sourceRoot":"","sources":["../../../server/service/approval-notice/approval-notice-rules.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * The rules of the approval notice (ADR-0164) - who is told and what they read. How it is sent is notification's.\n * Plain functions over plain values: no entity, no request, so a test holds every rule without a database.\n */\nimport type { NoticeWords } from '@things-factory/notification'\nimport type { ApprovalLineItem } from '@things-factory/organization'\n\nimport { isApprovalStep } from '../../controllers/activity-approval/approval-line.js'\n\n/**\n * What happened.\n *\n * - `request` a seat's turn came - the first one on submit, the next one after an approval\n * - `delegated` a seat was handed to someone\n * - `reference` someone was seated to read along\n * - `approved` the last approval ended the case\n * - `rejected` an approver sent it back\n */\nexport type ApprovalNoticeKind = 'request' | 'delegated' | 'reference' | 'approved' | 'rejected'\n\nexport const APPROVAL_NOTICE_KINDS: readonly ApprovalNoticeKind[] = ['request', 'delegated', 'reference', 'approved', 'rejected']\n\n/** A notice for the person whose turn it is - the other kinds tell the requester of a judgment. */\nexport function isTurnNotice(kind: ApprovalNoticeKind): boolean {\n return kind === 'request' || kind === 'delegated' || kind === 'reference'\n}\n\nexport type NoticePerson = { id: string; name?: string | null; email?: string | null; locale?: string | null }\n\n/**\n * Who is told.\n *\n * A turn reaches the seat: its person, or - for a seat held by a role - everyone holding the role. A judgment\n * reaches the requester. Whoever did the thing is not told of it, and nobody is told twice.\n */\nexport function noticeReceivers({\n kind,\n approver,\n roleHolders,\n requester,\n actorId\n}: {\n kind: ApprovalNoticeKind\n approver?: NoticePerson | null\n roleHolders?: NoticePerson[] | null\n requester?: NoticePerson | null\n actorId?: string | null\n}): NoticePerson[] {\n const candidates = isTurnNotice(kind) ? (approver ? [approver] : roleHolders || []) : requester ? [requester] : []\n const seen = new Set<string>()\n\n return candidates.filter(person => {\n if (!person?.id || person.id === actorId || seen.has(person.id)) return false\n seen.add(person.id)\n return true\n })\n}\n\n/**\n * The page the notice opens, relative to the domain - the same pages the worklist lists open.\n *\n * A turn opens the approval. An approved case opens the thread's read-only view; a rejected one opens the thread\n * itself, where the requester revises and raises it again.\n */\nexport function noticeAddress(kind: ApprovalNoticeKind, { approvalId, threadId }: { approvalId: string; threadId: string }): string {\n if (isTurnNotice(kind)) return `activity-approval/${approvalId}`\n return kind === 'approved' ? `activity-thread-view/${threadId}` : `activity-thread/${threadId}`\n}\n\n/** Which approval of the line this seat is - references take a place in the line but are not counted. */\nexport function approvalStep(line: ApprovalLineItem[] | null | undefined, order: number): { step: number; steps: number } | undefined {\n const orders = (line || []).map((item, index) => (isApprovalStep(item) ? index + 1 : 0)).filter(Boolean)\n const step = orders.indexOf(order) + 1\n return step ? { step, steps: orders.length } : undefined\n}\n\n\nexport type NoticeFacts = {\n kind: ApprovalNoticeKind\n /** The case as the worklist names it. */\n name: string\n requester?: string | null\n /** Who did the thing - the approver who judged, the person who handed a seat on. */\n actor?: string | null\n step?: number\n steps?: number\n}\n\nexport type Translate = (key: string, options?: { [name: string]: unknown }) => string\n\n/**\n * The sentences, from the worklist translations (`approval-notice.<kind>.*`). Nothing of the request's content goes\n * in: no input, no amount, no comment. The page behind the link shows those to whoever may see them.\n */\nexport function noticeWords(t: Translate, facts: NoticeFacts): NoticeWords {\n const values = {\n name: facts.name,\n requester: facts.requester || '-',\n actor: facts.actor || '-',\n step: facts.step ?? '-',\n steps: facts.steps ?? '-'\n }\n\n return {\n subject: t(`approval-notice.${facts.kind}.subject`, values),\n body: t(`approval-notice.${facts.kind}.body`, values),\n action: t(isTurnNotice(facts.kind) ? 'approval-notice.open-approval' : 'approval-notice.open-request', values),\n note: t(isTurnNotice(facts.kind) ? 'approval-notice.see-approval-box' : 'approval-notice.see-request-box', values)\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { type ApprovalNoticeKind } from './approval-notice-rules.js';
2
+ /**
3
+ * Tells of what just happened to approval `approvalId`, once the transaction has committed.
4
+ *
5
+ * Who and what are settled here, inside the transaction, from rows it can see. Nothing here throws: a notice that
6
+ * cannot be made is reported and the approval stands.
7
+ */
8
+ export declare function noticeApproval(context: ResolverContext, { kind, approvalId }: {
9
+ kind: ApprovalNoticeKind;
10
+ approvalId: string;
11
+ }): Promise<void>;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.noticeApproval = noticeApproval;
4
+ /*
5
+ * The approval notice (ADR-0164) - the one place the worklist tells people of an approval's turn and judgment.
6
+ *
7
+ * The four places an approval moves call `noticeApproval`: createApproval (a turn or a reference), delegate (a
8
+ * handed seat), approve with no one after (approved) and reject (rejected). Applications call nothing; a case that
9
+ * goes through the approval line is told of. Sending is notification's (`sendNoticeWhenCommitted`).
10
+ */
11
+ const auth_base_1 = require("@things-factory/auth-base");
12
+ const env_1 = require("@things-factory/env");
13
+ const translator_1 = require("@things-factory/i18n-base/translator");
14
+ const notification_1 = require("@things-factory/notification");
15
+ const activity_approval_js_1 = require("../activity-approval/activity-approval.js");
16
+ const assignee_pool_js_1 = require("../activity-instance/assignee-pool.js");
17
+ const approval_notice_rules_js_1 = require("./approval-notice-rules.js");
18
+ /**
19
+ * Tells of what just happened to approval `approvalId`, once the transaction has committed.
20
+ *
21
+ * Who and what are settled here, inside the transaction, from rows it can see. Nothing here throws: a notice that
22
+ * cannot be made is reported and the approval stands.
23
+ */
24
+ async function noticeApproval(context, { kind, approvalId }) {
25
+ try {
26
+ const { user, tx } = context.state;
27
+ const approval = await tx.getRepository(activity_approval_js_1.ActivityApproval).findOne({
28
+ where: { id: approvalId },
29
+ relations: ['approver', 'approverRole', 'approverRole.users', 'activityThread', 'activityThread.assignee', 'activityThread.activityInstance']
30
+ });
31
+ const thread = approval?.activityThread;
32
+ const instance = thread?.activityInstance;
33
+ if (!approval || !thread || !instance)
34
+ return;
35
+ const receivers = (0, approval_notice_rules_js_1.noticeReceivers)({
36
+ kind,
37
+ approver: active(approval.approver),
38
+ roleHolders: (0, assignee_pool_js_1.poolMembers)(approval.approverRole ? [approval.approverRole] : []).map(active).filter(Boolean),
39
+ requester: active(thread.assignee),
40
+ actorId: user?.id
41
+ });
42
+ if (!receivers.length)
43
+ return;
44
+ const facts = {
45
+ kind,
46
+ name: instance.name || '',
47
+ requester: thread.assignee?.name,
48
+ actor: user?.name,
49
+ ...((0, approval_notice_rules_js_1.isTurnNotice)(kind) ? (0, approval_notice_rules_js_1.approvalStep)(instance.approvalLine, approval.order) : {})
50
+ };
51
+ const address = (0, approval_notice_rules_js_1.noticeAddress)(kind, { approvalId: approval.id, threadId: thread.id });
52
+ (0, notification_1.sendNoticeWhenCommitted)(context, {
53
+ type: 'approval',
54
+ level: kind === 'rejected' ? 'warn' : 'info',
55
+ receivers,
56
+ words: lng => (0, approval_notice_rules_js_1.noticeWords)(translatorOf(lng), facts),
57
+ address,
58
+ link: (0, notification_1.noticeLinkOf)(context, address),
59
+ label: `approval notice ${kind} of ${approval.id}`
60
+ });
61
+ }
62
+ catch (error) {
63
+ env_1.logger.error(`[worklist] approval notice ${kind} of ${approvalId} could not be made`, error);
64
+ }
65
+ }
66
+ /** Only a person who can sign in is told. */
67
+ function active(person) {
68
+ return person && person.status === auth_base_1.UserStatus.ACTIVATED ? { id: person.id, name: person.name, email: person.email, locale: person.locale } : null;
69
+ }
70
+ /** A sentence missing in the person's language is said in English, never as its key. */
71
+ function translatorOf(lng) {
72
+ const own = (0, translator_1.translatorFor)(lng);
73
+ const english = (0, translator_1.translatorFor)('en');
74
+ return (key, options = {}) => own(key, { ...options, defaultValue: english(key, options) });
75
+ }
76
+ //# sourceMappingURL=approval-notice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-notice.js","sourceRoot":"","sources":["../../../server/service/approval-notice/approval-notice.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * The approval notice (ADR-0164) - the one place the worklist tells people of an approval's turn and judgment.\n *\n * The four places an approval moves call `noticeApproval`: createApproval (a turn or a reference), delegate (a\n * handed seat), approve with no one after (approved) and reject (rejected). Applications call nothing; a case that\n * goes through the approval line is told of. Sending is notification's (`sendNoticeWhenCommitted`).\n */\nimport { User, UserStatus } from '@things-factory/auth-base'\nimport { logger } from '@things-factory/env'\nimport { translatorFor } from '@things-factory/i18n-base/translator'\nimport { noticeLinkOf, sendNoticeWhenCommitted } from '@things-factory/notification'\n\nimport { ActivityApproval } from '../activity-approval/activity-approval.js'\nimport { poolMembers } from '../activity-instance/assignee-pool.js'\nimport {\n approvalStep,\n isTurnNotice,\n noticeAddress,\n noticeReceivers,\n noticeWords,\n type ApprovalNoticeKind,\n type NoticeFacts,\n type NoticePerson,\n type Translate\n} from './approval-notice-rules.js'\n\n/**\n * Tells of what just happened to approval `approvalId`, once the transaction has committed.\n *\n * Who and what are settled here, inside the transaction, from rows it can see. Nothing here throws: a notice that\n * cannot be made is reported and the approval stands.\n */\nexport async function noticeApproval(context: ResolverContext, { kind, approvalId }: { kind: ApprovalNoticeKind; approvalId: string }): Promise<void> {\n try {\n const { user, tx } = context.state\n\n const approval = await tx.getRepository(ActivityApproval).findOne({\n where: { id: approvalId },\n relations: ['approver', 'approverRole', 'approverRole.users', 'activityThread', 'activityThread.assignee', 'activityThread.activityInstance']\n })\n const thread = approval?.activityThread\n const instance = thread?.activityInstance\n if (!approval || !thread || !instance) return\n\n const receivers = noticeReceivers({\n kind,\n approver: active(approval.approver),\n roleHolders: poolMembers(approval.approverRole ? [approval.approverRole] : []).map(active).filter(Boolean),\n requester: active(thread.assignee),\n actorId: user?.id\n })\n if (!receivers.length) return\n\n const facts: NoticeFacts = {\n kind,\n name: instance.name || '',\n requester: thread.assignee?.name,\n actor: user?.name,\n ...(isTurnNotice(kind) ? approvalStep(instance.approvalLine, approval.order) : {})\n }\n const address = noticeAddress(kind, { approvalId: approval.id, threadId: thread.id })\n\n sendNoticeWhenCommitted(context, {\n type: 'approval',\n level: kind === 'rejected' ? 'warn' : 'info',\n receivers,\n words: lng => noticeWords(translatorOf(lng), facts),\n address,\n link: noticeLinkOf(context, address),\n label: `approval notice ${kind} of ${approval.id}`\n })\n } catch (error) {\n logger.error(`[worklist] approval notice ${kind} of ${approvalId} could not be made`, error)\n }\n}\n\n/** Only a person who can sign in is told. */\nfunction active(person?: User | null): NoticePerson | null {\n return person && person.status === UserStatus.ACTIVATED ? { id: person.id, name: person.name, email: person.email, locale: person.locale } : null\n}\n\n/** A sentence missing in the person's language is said in English, never as its key. */\nfunction translatorOf(lng: string): Translate {\n const own = translatorFor(lng)\n const english = translatorFor('en')\n return (key, options = {}) => own(key, { ...options, defaultValue: english(key, options) })\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { Pagination } from '@things-factory/shell';
2
+ import { ApprovalProgressFilter, ApprovalProgressList } from './approval-progress-type.js';
3
+ /**
4
+ * 결재 현황 — the domain's every approval case and where it stands, whatever its kind (ADR-0183).
5
+ *
6
+ * Read by whoever reads every case (`activity-instance` query, the rule `assert-may-read.ts` names): a line shows
7
+ * the headline and the requester of a case the reader may already open.
8
+ *
9
+ * A case is one activity instance with a deciding approval row. Its state, step and waiting are read from the rows
10
+ * by `progressOf`; the filter and the counts run on those lines, so a count says what the list would show.
11
+ */
12
+ export declare class ApprovalProgressQuery {
13
+ approvalProgress(filter: ApprovalProgressFilter, pagination: Pagination, context: ResolverContext): Promise<ApprovalProgressList>;
14
+ }
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApprovalProgressQuery = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const type_graphql_1 = require("type-graphql");
6
+ const auth_base_1 = require("@things-factory/auth-base");
7
+ const organization_1 = require("@things-factory/organization");
8
+ const shell_1 = require("@things-factory/shell");
9
+ const activity_approval_js_1 = require("../activity-approval/activity-approval.js");
10
+ const decision_key_declaration_js_1 = require("../activity/decision-key-declaration.js");
11
+ const approval_progress_rule_js_1 = require("./approval-progress-rule.js");
12
+ const approval_progress_type_js_1 = require("./approval-progress-type.js");
13
+ const waiting_on_js_1 = require("./waiting-on.js");
14
+ /**
15
+ * 결재 현황 — the domain's every approval case and where it stands, whatever its kind (ADR-0183).
16
+ *
17
+ * Read by whoever reads every case (`activity-instance` query, the rule `assert-may-read.ts` names): a line shows
18
+ * the headline and the requester of a case the reader may already open.
19
+ *
20
+ * A case is one activity instance with a deciding approval row. Its state, step and waiting are read from the rows
21
+ * by `progressOf`; the filter and the counts run on those lines, so a count says what the list would show.
22
+ */
23
+ let ApprovalProgressQuery = class ApprovalProgressQuery {
24
+ async approvalProgress(filter, pagination, context) {
25
+ const { domain } = context.state;
26
+ filter = filter || {};
27
+ const rows = await (0, shell_1.getRepository)(activity_approval_js_1.ActivityApproval)
28
+ .createQueryBuilder('ap')
29
+ .innerJoinAndSelect('ap.activityThread', 'at')
30
+ .innerJoinAndSelect('at.activityInstance', 'ai')
31
+ .leftJoinAndSelect('ai.activity', 'act')
32
+ .where('ap.domain = :domainId', { domainId: domain.id })
33
+ .getMany();
34
+ const cases = new Map();
35
+ for (const row of rows) {
36
+ const id = row.activityThread.activityInstance.id;
37
+ cases.set(id, [...(cases.get(id) || []), row]);
38
+ }
39
+ const requesterOf = (approvals) => {
40
+ const thread = approvals[0].activityThread;
41
+ return thread.assigneeId || thread.activityInstance.creatorId;
42
+ };
43
+ const requesterIds = [...new Set([...cases.values()].map(requesterOf).filter(Boolean))];
44
+ const employees = requesterIds.length
45
+ ? await (0, shell_1.getRepository)(organization_1.Employee)
46
+ .createQueryBuilder('e')
47
+ .leftJoinAndSelect('e.user', 'u')
48
+ .leftJoinAndSelect('e.department', 'd')
49
+ .where('e.domain = :domainId', { domainId: domain.id })
50
+ .andWhere('u.id IN (:...requesterIds)', { requesterIds })
51
+ .getMany()
52
+ : [];
53
+ const employeeOf = new Map(employees.map(one => [one.user?.id, one]));
54
+ const users = requesterIds.length
55
+ ? await (0, shell_1.getRepository)(auth_base_1.User).createQueryBuilder('u').where('u.id IN (:...requesterIds)', { requesterIds }).getMany()
56
+ : [];
57
+ const userName = new Map(users.map(one => [one.id, one.name]));
58
+ const lines = [];
59
+ for (const [id, approvals] of cases) {
60
+ /* A case seated only for references is not an approval. */
61
+ if (!approvals.some(row => row.participation !== 'reference'))
62
+ continue;
63
+ const instance = approvals[0].activityThread.activityInstance;
64
+ const requesterId = requesterOf(approvals);
65
+ const employee = employeeOf.get(requesterId);
66
+ lines.push({
67
+ id,
68
+ approvals,
69
+ activityName: instance.activity?.name ?? '',
70
+ headline: instance.name ?? '',
71
+ requesterName: employee?.name || userName.get(requesterId),
72
+ departmentId: employee?.department?.id,
73
+ progress: (0, approval_progress_rule_js_1.progressOf)({
74
+ instanceState: instance.state,
75
+ dueAt: instance.dueAt,
76
+ approvalLine: instance.approvalLine,
77
+ approvals
78
+ })
79
+ });
80
+ }
81
+ const passing = lines.filter(line => (0, approval_progress_rule_js_1.passes)(line, filter)).sort(approval_progress_rule_js_1.inProgressOrder);
82
+ const { states, overdue } = (0, approval_progress_rule_js_1.countsOf)(lines, filter);
83
+ const limit = pagination?.limit || 50;
84
+ const page = pagination?.page || 1;
85
+ const pageLines = passing.slice((page - 1) * limit, page * limit);
86
+ const items = [];
87
+ for (const line of pageLines) {
88
+ const instance = line.approvals[0].activityThread.activityInstance;
89
+ const { names, roleName } = await (0, waiting_on_js_1.namesWaitedOn)((0, shell_1.getRepository)(activity_approval_js_1.ActivityApproval).manager, line.progress.waiting);
90
+ const employee = employeeOf.get(requesterOf(line.approvals));
91
+ items.push({
92
+ id: line.id,
93
+ activityName: line.activityName,
94
+ activityLabel: instance.activity?.label || line.activityName,
95
+ activityLabelTKey: line.activityName ? (0, decision_key_declaration_js_1.activityTKey)(line.activityName, 'label') : undefined,
96
+ headline: line.headline,
97
+ requesterName: line.requesterName,
98
+ departmentName: employee?.department?.name,
99
+ state: line.progress.state,
100
+ step: line.progress.step,
101
+ steps: line.progress.steps,
102
+ waitingOn: names,
103
+ waitingRole: roleName,
104
+ waitingSince: line.progress.waitingSince,
105
+ dueAt: instance.dueAt,
106
+ overdue: line.progress.overdue,
107
+ raisedAt: line.progress.raisedAt,
108
+ endedAt: line.progress.endedAt
109
+ });
110
+ }
111
+ /* The kinds that have a case here - what the kind filter offers. */
112
+ const kinds = new Map();
113
+ for (const line of lines) {
114
+ const activity = line.approvals[0].activityThread.activityInstance.activity;
115
+ if (line.activityName && !kinds.has(line.activityName))
116
+ kinds.set(line.activityName, { name: line.activityName, label: activity?.label || line.activityName, labelTKey: (0, decision_key_declaration_js_1.activityTKey)(line.activityName, 'label') });
117
+ }
118
+ return {
119
+ items,
120
+ kinds: [...kinds.values()].sort((a, b) => a.label.localeCompare(b.label)),
121
+ total: passing.length,
122
+ counts: approval_progress_rule_js_1.APPROVAL_PROGRESS_STATES.map(state => ({ state, count: states[state] })),
123
+ overdue
124
+ };
125
+ }
126
+ };
127
+ exports.ApprovalProgressQuery = ApprovalProgressQuery;
128
+ tslib_1.__decorate([
129
+ (0, type_graphql_1.Directive)('@privilege(category: "activity-instance", privilege: "query", domainOwnerGranted: true)'),
130
+ (0, type_graphql_1.Query)(returns => approval_progress_type_js_1.ApprovalProgressList, { description: 'The approvals of this domain, every kind, and where each stands.' }),
131
+ tslib_1.__param(0, (0, type_graphql_1.Arg)('filter', type => approval_progress_type_js_1.ApprovalProgressFilter, { nullable: true })),
132
+ tslib_1.__param(1, (0, type_graphql_1.Arg)('pagination', type => shell_1.Pagination, { nullable: true })),
133
+ tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
134
+ tslib_1.__metadata("design:type", Function),
135
+ tslib_1.__metadata("design:paramtypes", [approval_progress_type_js_1.ApprovalProgressFilter,
136
+ shell_1.Pagination, Object]),
137
+ tslib_1.__metadata("design:returntype", Promise)
138
+ ], ApprovalProgressQuery.prototype, "approvalProgress", null);
139
+ exports.ApprovalProgressQuery = ApprovalProgressQuery = tslib_1.__decorate([
140
+ (0, type_graphql_1.Resolver)()
141
+ ], ApprovalProgressQuery);
142
+ //# sourceMappingURL=approval-progress-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-progress-query.js","sourceRoot":"","sources":["../../../server/service/approval-progress/approval-progress-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Query, Resolver } from 'type-graphql'\n\nimport { User } from '@things-factory/auth-base'\nimport { Employee } from '@things-factory/organization'\nimport { getRepository, Pagination } from '@things-factory/shell'\n\nimport { ActivityApproval } from '../activity-approval/activity-approval.js'\nimport { activityTKey } from '../activity/decision-key-declaration.js'\nimport {\n APPROVAL_PROGRESS_STATES,\n countsOf,\n inProgressOrder,\n passes,\n progressOf,\n ProgressLine\n} from './approval-progress-rule.js'\nimport { ApprovalProgress, ApprovalProgressFilter, ApprovalProgressList } from './approval-progress-type.js'\nimport { namesWaitedOn } from './waiting-on.js'\n\n/**\n * 결재 현황 — the domain's every approval case and where it stands, whatever its kind (ADR-0183).\n *\n * Read by whoever reads every case (`activity-instance` query, the rule `assert-may-read.ts` names): a line shows\n * the headline and the requester of a case the reader may already open.\n *\n * A case is one activity instance with a deciding approval row. Its state, step and waiting are read from the rows\n * by `progressOf`; the filter and the counts run on those lines, so a count says what the list would show.\n */\n@Resolver()\nexport class ApprovalProgressQuery {\n @Directive('@privilege(category: \"activity-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ApprovalProgressList, { description: 'The approvals of this domain, every kind, and where each stands.' })\n async approvalProgress(\n @Arg('filter', type => ApprovalProgressFilter, { nullable: true }) filter: ApprovalProgressFilter,\n @Arg('pagination', type => Pagination, { nullable: true }) pagination: Pagination,\n @Ctx() context: ResolverContext\n ): Promise<ApprovalProgressList> {\n const { domain } = context.state\n filter = filter || {}\n\n const rows = await getRepository(ActivityApproval)\n .createQueryBuilder('ap')\n .innerJoinAndSelect('ap.activityThread', 'at')\n .innerJoinAndSelect('at.activityInstance', 'ai')\n .leftJoinAndSelect('ai.activity', 'act')\n .where('ap.domain = :domainId', { domainId: domain.id })\n .getMany()\n\n const cases = new Map<string, ActivityApproval[]>()\n for (const row of rows) {\n const id = row.activityThread.activityInstance.id\n cases.set(id, [...(cases.get(id) || []), row])\n }\n\n const requesterOf = (approvals: ActivityApproval[]) => {\n const thread = approvals[0].activityThread\n return thread.assigneeId || thread.activityInstance.creatorId\n }\n\n const requesterIds = [...new Set([...cases.values()].map(requesterOf).filter(Boolean))]\n const employees = requesterIds.length\n ? await getRepository(Employee)\n .createQueryBuilder('e')\n .leftJoinAndSelect('e.user', 'u')\n .leftJoinAndSelect('e.department', 'd')\n .where('e.domain = :domainId', { domainId: domain.id })\n .andWhere('u.id IN (:...requesterIds)', { requesterIds })\n .getMany()\n : []\n const employeeOf = new Map(employees.map(one => [one.user?.id, one]))\n const users = requesterIds.length\n ? await getRepository(User).createQueryBuilder('u').where('u.id IN (:...requesterIds)', { requesterIds }).getMany()\n : []\n const userName = new Map(users.map(one => [one.id, one.name]))\n\n const lines: (ProgressLine & { id: string; approvals: ActivityApproval[] })[] = []\n for (const [id, approvals] of cases) {\n /* A case seated only for references is not an approval. */\n if (!approvals.some(row => row.participation !== 'reference')) continue\n\n const instance = approvals[0].activityThread.activityInstance\n const requesterId = requesterOf(approvals)\n const employee = employeeOf.get(requesterId)\n\n lines.push({\n id,\n approvals,\n activityName: instance.activity?.name ?? '',\n headline: instance.name ?? '',\n requesterName: employee?.name || userName.get(requesterId),\n departmentId: employee?.department?.id,\n progress: progressOf({\n instanceState: instance.state,\n dueAt: instance.dueAt,\n approvalLine: instance.approvalLine as any,\n approvals\n })\n })\n }\n\n const passing = lines.filter(line => passes(line, filter)).sort(inProgressOrder)\n const { states, overdue } = countsOf(lines, filter)\n\n const limit = pagination?.limit || 50\n const page = pagination?.page || 1\n const pageLines = passing.slice((page - 1) * limit, page * limit)\n\n const items: ApprovalProgress[] = []\n for (const line of pageLines) {\n const instance = line.approvals[0].activityThread.activityInstance\n const { names, roleName } = await namesWaitedOn(getRepository(ActivityApproval).manager, line.progress.waiting)\n const employee = employeeOf.get(requesterOf(line.approvals))\n\n items.push({\n id: line.id,\n activityName: line.activityName,\n activityLabel: instance.activity?.label || line.activityName,\n activityLabelTKey: line.activityName ? activityTKey(line.activityName, 'label') : undefined,\n headline: line.headline,\n requesterName: line.requesterName,\n departmentName: employee?.department?.name,\n state: line.progress.state,\n step: line.progress.step,\n steps: line.progress.steps,\n waitingOn: names,\n waitingRole: roleName,\n waitingSince: line.progress.waitingSince,\n dueAt: instance.dueAt,\n overdue: line.progress.overdue,\n raisedAt: line.progress.raisedAt,\n endedAt: line.progress.endedAt\n })\n }\n\n /* The kinds that have a case here - what the kind filter offers. */\n const kinds = new Map<string, { name: string; label: string; labelTKey: string }>()\n for (const line of lines) {\n const activity = line.approvals[0].activityThread.activityInstance.activity\n if (line.activityName && !kinds.has(line.activityName))\n kinds.set(line.activityName, { name: line.activityName, label: activity?.label || line.activityName, labelTKey: activityTKey(line.activityName, 'label') })\n }\n\n return {\n items,\n kinds: [...kinds.values()].sort((a, b) => a.label.localeCompare(b.label)),\n total: passing.length,\n counts: APPROVAL_PROGRESS_STATES.map(state => ({ state, count: states[state] })),\n overdue\n }\n }\n}\n"]}
@@ -0,0 +1,67 @@
1
+ export type ApprovalProgressState = 'PENDING' | 'APPROVED' | 'REJECTED' | 'ABORTED';
2
+ export declare const APPROVAL_PROGRESS_STATES: readonly ApprovalProgressState[];
3
+ export interface ProgressApprovalRow {
4
+ round?: number | null;
5
+ order?: number | null;
6
+ judgment?: string | null;
7
+ participation?: string | null;
8
+ createdAt?: Date | null;
9
+ terminatedAt?: Date | null;
10
+ approverId?: string | null;
11
+ approverRoleId?: string | null;
12
+ }
13
+ export interface ProgressFacts {
14
+ instanceState?: string | null;
15
+ dueAt?: Date | null;
16
+ approvalLine?: {
17
+ participation?: string;
18
+ }[] | null;
19
+ approvals: ProgressApprovalRow[];
20
+ }
21
+ export interface Progress {
22
+ state: ApprovalProgressState;
23
+ /** The step waited on now, counted among the deciding steps (references skipped) — 1 for the first approver. */
24
+ step?: number;
25
+ /** How many deciding steps the line has. */
26
+ steps: number;
27
+ /** The rows of the step waited on now — whom it waits on. */
28
+ waiting: ProgressApprovalRow[];
29
+ /** Since when the step waited on now has waited — its row is made when the step before it is approved. */
30
+ waitingSince?: Date;
31
+ /** When it was first put up for approval. */
32
+ raisedAt?: Date;
33
+ /** When it ended, for what is no longer waiting. */
34
+ endedAt?: Date;
35
+ overdue: boolean;
36
+ }
37
+ export declare function progressOf(facts: ProgressFacts, now?: Date): Progress;
38
+ export interface ProgressFilter {
39
+ activityNames?: string[] | null;
40
+ states?: string[] | null;
41
+ departmentIds?: string[] | null;
42
+ /** The first day raised, inclusive. */
43
+ from?: Date | null;
44
+ /** The last moment raised, exclusive. */
45
+ to?: Date | null;
46
+ overdueOnly?: boolean | null;
47
+ search?: string | null;
48
+ }
49
+ export interface ProgressLine {
50
+ activityName: string;
51
+ headline: string;
52
+ requesterName?: string;
53
+ departmentId?: string;
54
+ progress: Progress;
55
+ }
56
+ /** Whether a line passes the filter. `ignore` leaves out the conditions a count is taken across. */
57
+ export declare function passes(line: ProgressLine, filter: ProgressFilter, ignore?: {
58
+ state?: boolean;
59
+ overdue?: boolean;
60
+ }): boolean;
61
+ /** What waits stands first, the longest waiting at the top; what ended follows, the latest first. */
62
+ export declare function inProgressOrder(a: ProgressLine, b: ProgressLine): number;
63
+ /** How many lines stand in each state, and how many are overdue — under the filter's other conditions. */
64
+ export declare function countsOf(lines: ProgressLine[], filter: ProgressFilter): {
65
+ states: Record<ApprovalProgressState, number>;
66
+ overdue: number;
67
+ };
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APPROVAL_PROGRESS_STATES = void 0;
4
+ exports.progressOf = progressOf;
5
+ exports.passes = passes;
6
+ exports.inProgressOrder = inProgressOrder;
7
+ exports.countsOf = countsOf;
8
+ const approval_step_js_1 = require("../../../shared/approval-step.js");
9
+ exports.APPROVAL_PROGRESS_STATES = ['PENDING', 'APPROVED', 'REJECTED', 'ABORTED'];
10
+ const deciding = (row) => row.participation !== 'reference';
11
+ const timeOf = (value) => (value ? new Date(value).getTime() : undefined);
12
+ const earliest = (values) => {
13
+ const times = values.map(timeOf).filter((one) => one !== undefined);
14
+ return times.length ? new Date(Math.min(...times)) : undefined;
15
+ };
16
+ const latest = (values) => {
17
+ const times = values.map(timeOf).filter((one) => one !== undefined);
18
+ return times.length ? new Date(Math.max(...times)) : undefined;
19
+ };
20
+ /** The orders of the deciding steps of the line — a reference takes a place in the line and is not a step. */
21
+ function decidingOrders(facts) {
22
+ const line = facts.approvalLine || [];
23
+ if (line.length) {
24
+ return line.map((item, index) => (item?.participation === 'reference' ? 0 : index + 1)).filter(Boolean);
25
+ }
26
+ /* A case with no line kept on it: the orders its deciding rows carry. */
27
+ return [...new Set(facts.approvals.filter(deciding).map(row => Number(row.order) || 0))].sort((a, b) => a - b);
28
+ }
29
+ function progressOf(facts, now = new Date()) {
30
+ const approvals = facts.approvals || [];
31
+ const round = (0, approval_step_js_1.latestRound)(approvals);
32
+ const thisRound = approvals.filter(row => (Number(row.round) || 0) === round && deciding(row));
33
+ const orders = decidingOrders(facts);
34
+ /*
35
+ * 반려가 중단보다 먼저다. Office 의 문은 반려되면 업무를 닫는다(`rejectionIsFinal`) — 그 건은 aborted 이고
36
+ * 그 차수에 rejected 가 남는다. 중단을 먼저 읽으면 반려된 결재가 「중단」으로 보인다.
37
+ */
38
+ const state = thisRound.some(row => row.judgment === 'rejected')
39
+ ? 'REJECTED'
40
+ : facts.instanceState === 'aborted'
41
+ ? 'ABORTED'
42
+ : (0, approval_step_js_1.currentStepOf)(approvals)
43
+ ? 'PENDING'
44
+ : 'APPROVED';
45
+ const step = state === 'PENDING' ? (0, approval_step_js_1.currentStepOf)(approvals) : undefined;
46
+ const waiting = state === 'PENDING' ? (0, approval_step_js_1.currentStepRows)(approvals) : [];
47
+ const dueAt = timeOf(facts.dueAt);
48
+ return {
49
+ state,
50
+ step: step ? (orders.indexOf(step.order) + 1 || step.order) : undefined,
51
+ steps: orders.length,
52
+ waiting,
53
+ waitingSince: earliest(waiting.map(row => row.createdAt)),
54
+ raisedAt: earliest(approvals.filter(deciding).map(row => row.createdAt)),
55
+ endedAt: state === 'PENDING' ? undefined : latest(thisRound.map(row => row.terminatedAt)),
56
+ overdue: state === 'PENDING' && dueAt !== undefined && dueAt < now.getTime()
57
+ };
58
+ }
59
+ /** Whether a line passes the filter. `ignore` leaves out the conditions a count is taken across. */
60
+ function passes(line, filter, ignore = {}) {
61
+ const { progress } = line;
62
+ if (filter.activityNames?.length && !filter.activityNames.includes(line.activityName))
63
+ return false;
64
+ if (!ignore.state && filter.states?.length && !filter.states.includes(progress.state))
65
+ return false;
66
+ if (filter.departmentIds?.length && !filter.departmentIds.includes(line.departmentId ?? ''))
67
+ return false;
68
+ const raised = timeOf(progress.raisedAt);
69
+ if (filter.from && (raised === undefined || raised < new Date(filter.from).getTime()))
70
+ return false;
71
+ if (filter.to && (raised === undefined || raised >= new Date(filter.to).getTime()))
72
+ return false;
73
+ if (!ignore.overdue && filter.overdueOnly && !progress.overdue)
74
+ return false;
75
+ const search = filter.search?.trim().toLowerCase();
76
+ if (search && ![line.headline, line.requesterName ?? ''].some(text => text.toLowerCase().includes(search)))
77
+ return false;
78
+ return true;
79
+ }
80
+ /** What waits stands first, the longest waiting at the top; what ended follows, the latest first. */
81
+ function inProgressOrder(a, b) {
82
+ const pendingA = a.progress.state === 'PENDING';
83
+ const pendingB = b.progress.state === 'PENDING';
84
+ if (pendingA !== pendingB)
85
+ return pendingA ? -1 : 1;
86
+ if (pendingA)
87
+ return (timeOf(a.progress.waitingSince) ?? 0) - (timeOf(b.progress.waitingSince) ?? 0);
88
+ return (timeOf(b.progress.endedAt ?? b.progress.raisedAt) ?? 0) - (timeOf(a.progress.endedAt ?? a.progress.raisedAt) ?? 0);
89
+ }
90
+ /** How many lines stand in each state, and how many are overdue — under the filter's other conditions. */
91
+ function countsOf(lines, filter) {
92
+ const states = Object.fromEntries(exports.APPROVAL_PROGRESS_STATES.map(state => [state, 0]));
93
+ let overdue = 0;
94
+ for (const line of lines) {
95
+ if (passes(line, filter, { state: true, overdue: true }))
96
+ states[line.progress.state]++;
97
+ if (passes(line, filter, { overdue: true }) && line.progress.overdue)
98
+ overdue++;
99
+ }
100
+ return { states, overdue };
101
+ }
102
+ //# sourceMappingURL=approval-progress-rule.js.map