@nocobase/app-plugin-projects 0.1.0-beta.7 → 0.1.0-beta.9

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 (491) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +60 -104
  3. package/dist/client/api/changed-issues.d.ts +12 -0
  4. package/dist/client/api/changed-issues.d.ts.map +1 -0
  5. package/dist/client/api/changed-issues.js +30 -0
  6. package/dist/client/api/changed-issues.js.map +1 -0
  7. package/dist/client/api/client.d.ts +4 -23
  8. package/dist/client/api/client.d.ts.map +1 -1
  9. package/dist/client/api/client.js +4 -48
  10. package/dist/client/api/client.js.map +1 -1
  11. package/dist/client/api/keys.d.ts +2 -8
  12. package/dist/client/api/keys.d.ts.map +1 -1
  13. package/dist/client/api/keys.js +2 -17
  14. package/dist/client/api/keys.js.map +1 -1
  15. package/dist/client/components/pm-badges.d.ts +1 -1
  16. package/dist/client/components/pm-badges.d.ts.map +1 -1
  17. package/dist/client/components/pm-executor-select.d.ts +2 -0
  18. package/dist/client/components/pm-executor-select.d.ts.map +1 -1
  19. package/dist/client/components/pm-executor-select.js.map +1 -1
  20. package/dist/client/components/ui/radio-group.d.ts +7 -0
  21. package/dist/client/components/ui/radio-group.d.ts.map +1 -0
  22. package/dist/client/components/ui/radio-group.js +12 -0
  23. package/dist/client/components/ui/radio-group.js.map +1 -0
  24. package/dist/client/config.d.ts +0 -2
  25. package/dist/client/config.d.ts.map +1 -1
  26. package/dist/client/config.js +1 -5
  27. package/dist/client/config.js.map +1 -1
  28. package/dist/client/issues.d.ts +2 -4
  29. package/dist/client/issues.d.ts.map +1 -1
  30. package/dist/client/issues.js +2 -3
  31. package/dist/client/issues.js.map +1 -1
  32. package/dist/client/kit/plans/lookup.d.ts +2 -2
  33. package/dist/client/kit/plans/lookup.js +3 -3
  34. package/dist/client/kit/plans/lookup.js.map +1 -1
  35. package/dist/client/kit/plans/plan-row.js +2 -2
  36. package/dist/client/kit/plans/plan-row.js.map +1 -1
  37. package/dist/client/kit.d.ts +3 -9
  38. package/dist/client/kit.d.ts.map +1 -1
  39. package/dist/client/kit.js +3 -9
  40. package/dist/client/kit.js.map +1 -1
  41. package/dist/client/lib/kinds.d.ts +3 -29
  42. package/dist/client/lib/kinds.d.ts.map +1 -1
  43. package/dist/client/lib/kinds.js +7 -46
  44. package/dist/client/lib/kinds.js.map +1 -1
  45. package/dist/client/lib/status-events.d.ts +21 -0
  46. package/dist/client/lib/status-events.d.ts.map +1 -0
  47. package/dist/client/lib/status-events.js +31 -0
  48. package/dist/client/lib/status-events.js.map +1 -0
  49. package/dist/client/lib/status.d.ts +5 -7
  50. package/dist/client/lib/status.d.ts.map +1 -1
  51. package/dist/client/lib/status.js +5 -7
  52. package/dist/client/lib/status.js.map +1 -1
  53. package/dist/client/locales/en-US.d.ts +6 -256
  54. package/dist/client/locales/en-US.d.ts.map +1 -1
  55. package/dist/client/locales/en-US.js +9 -255
  56. package/dist/client/locales/en-US.js.map +1 -1
  57. package/dist/client/locales/zh-CN.d.ts.map +1 -1
  58. package/dist/client/locales/zh-CN.js +10 -248
  59. package/dist/client/locales/zh-CN.js.map +1 -1
  60. package/dist/client/pages/issues/board/board-model.d.ts +1 -1
  61. package/dist/client/pages/issues/board/board-model.js +1 -1
  62. package/dist/client/pages/issues/board/use-board-move.d.ts +2 -8
  63. package/dist/client/pages/issues/board/use-board-move.d.ts.map +1 -1
  64. package/dist/client/pages/issues/board/use-board-move.js +5 -42
  65. package/dist/client/pages/issues/board/use-board-move.js.map +1 -1
  66. package/dist/client/pages/issues/detail/new-subtask.d.ts.map +1 -1
  67. package/dist/client/pages/issues/detail/new-subtask.js +6 -28
  68. package/dist/client/pages/issues/detail/new-subtask.js.map +1 -1
  69. package/dist/client/pages/issues/detail/subtask-model.d.ts +1 -1
  70. package/dist/client/pages/issues/detail/subtask-model.js +1 -1
  71. package/dist/client/pages/issues/detail/use-confirmed-update.d.ts +6 -8
  72. package/dist/client/pages/issues/detail/use-confirmed-update.d.ts.map +1 -1
  73. package/dist/client/pages/issues/detail/use-confirmed-update.js +9 -42
  74. package/dist/client/pages/issues/detail/use-confirmed-update.js.map +1 -1
  75. package/dist/client/pages/issues/detail/use-issue-page.d.ts +0 -4
  76. package/dist/client/pages/issues/detail/use-issue-page.d.ts.map +1 -1
  77. package/dist/client/pages/issues/detail/use-issue-page.js +0 -14
  78. package/dist/client/pages/issues/detail/use-issue-page.js.map +1 -1
  79. package/dist/client/pages/issues/detail/use-issue-update.d.ts +2 -2
  80. package/dist/client/pages/issues/detail/use-issue-update.d.ts.map +1 -1
  81. package/dist/client/pages/issues/detail/use-issue-update.js +4 -6
  82. package/dist/client/pages/issues/detail/use-issue-update.js.map +1 -1
  83. package/dist/client/pages/issues/new-issue-form.d.ts +11 -8
  84. package/dist/client/pages/issues/new-issue-form.d.ts.map +1 -1
  85. package/dist/client/pages/issues/new-issue-form.js +47 -79
  86. package/dist/client/pages/issues/new-issue-form.js.map +1 -1
  87. package/dist/client/pages/issues/new.d.ts.map +1 -1
  88. package/dist/client/pages/issues/new.js +2 -1
  89. package/dist/client/pages/issues/new.js.map +1 -1
  90. package/dist/client/pages/issues/use-executor-options.d.ts +3 -2
  91. package/dist/client/pages/issues/use-executor-options.d.ts.map +1 -1
  92. package/dist/client/pages/issues/use-executor-options.js +5 -23
  93. package/dist/client/pages/issues/use-executor-options.js.map +1 -1
  94. package/dist/client/pages/projects/detail/use-project-page.d.ts +4 -26
  95. package/dist/client/pages/projects/detail/use-project-page.d.ts.map +1 -1
  96. package/dist/client/pages/projects/detail/use-project-page.js +7 -53
  97. package/dist/client/pages/projects/detail/use-project-page.js.map +1 -1
  98. package/dist/client/pages/projects/new.d.ts +1 -1
  99. package/dist/client/pages/projects/new.d.ts.map +1 -1
  100. package/dist/client/pages/projects/new.js +3 -7
  101. package/dist/client/pages/projects/new.js.map +1 -1
  102. package/dist/client/plugin.d.ts +3 -0
  103. package/dist/client/plugin.d.ts.map +1 -1
  104. package/dist/client/plugin.js +8 -1
  105. package/dist/client/plugin.js.map +1 -1
  106. package/dist/client/projects.d.ts +2 -2
  107. package/dist/client/projects.d.ts.map +1 -1
  108. package/dist/client/projects.js +2 -2
  109. package/dist/client/projects.js.map +1 -1
  110. package/dist/client/providers/query-provider.d.ts.map +1 -1
  111. package/dist/client/providers/query-provider.js +13 -10
  112. package/dist/client/providers/query-provider.js.map +1 -1
  113. package/dist/database/migrations/.manifest.json +8 -0
  114. package/dist/database/migrations/202610240010_pm_fixed_statuses.d.ts +4 -0
  115. package/dist/database/migrations/202610240010_pm_fixed_statuses.d.ts.map +1 -0
  116. package/dist/database/migrations/202610240010_pm_fixed_statuses.js +189 -0
  117. package/dist/database/migrations/202610240010_pm_fixed_statuses.js.map +1 -0
  118. package/dist/database/migrations/202610240011_pm_issue_progress.d.ts +4 -0
  119. package/dist/database/migrations/202610240011_pm_issue_progress.d.ts.map +1 -0
  120. package/dist/database/migrations/202610240011_pm_issue_progress.js +19 -0
  121. package/dist/database/migrations/202610240011_pm_issue_progress.js.map +1 -0
  122. package/dist/server/composition.d.ts +11 -17
  123. package/dist/server/composition.d.ts.map +1 -1
  124. package/dist/server/composition.js +11 -56
  125. package/dist/server/composition.js.map +1 -1
  126. package/dist/server/domains/comments/comment.queries.d.ts +31 -0
  127. package/dist/server/domains/comments/comment.queries.d.ts.map +1 -1
  128. package/dist/server/domains/comments/comment.queries.js +27 -1
  129. package/dist/server/domains/comments/comment.queries.js.map +1 -1
  130. package/dist/server/domains/comments/comment.store.d.ts +19 -0
  131. package/dist/server/domains/comments/comment.store.d.ts.map +1 -1
  132. package/dist/server/domains/comments/comment.store.js +55 -0
  133. package/dist/server/domains/comments/comment.store.js.map +1 -1
  134. package/dist/server/domains/comments/index.d.ts +1 -1
  135. package/dist/server/domains/comments/index.d.ts.map +1 -1
  136. package/dist/server/domains/comments/index.js.map +1 -1
  137. package/dist/server/domains/issues/index.d.ts +1 -1
  138. package/dist/server/domains/issues/index.d.ts.map +1 -1
  139. package/dist/server/domains/issues/index.js +1 -1
  140. package/dist/server/domains/issues/index.js.map +1 -1
  141. package/dist/server/domains/issues/issue.context.d.ts +6 -22
  142. package/dist/server/domains/issues/issue.context.d.ts.map +1 -1
  143. package/dist/server/domains/issues/issue.context.js +1 -22
  144. package/dist/server/domains/issues/issue.context.js.map +1 -1
  145. package/dist/server/domains/issues/issue.fields.d.ts +5 -3
  146. package/dist/server/domains/issues/issue.fields.d.ts.map +1 -1
  147. package/dist/server/domains/issues/issue.fields.js +37 -16
  148. package/dist/server/domains/issues/issue.fields.js.map +1 -1
  149. package/dist/server/domains/issues/issue.projects.d.ts +2 -2
  150. package/dist/server/domains/issues/issue.projects.d.ts.map +1 -1
  151. package/dist/server/domains/issues/issue.projects.js +1 -2
  152. package/dist/server/domains/issues/issue.projects.js.map +1 -1
  153. package/dist/server/domains/issues/issue.queries.d.ts +10 -7
  154. package/dist/server/domains/issues/issue.queries.d.ts.map +1 -1
  155. package/dist/server/domains/issues/issue.queries.js +15 -41
  156. package/dist/server/domains/issues/issue.queries.js.map +1 -1
  157. package/dist/server/domains/issues/issue.routes.d.ts +1 -1
  158. package/dist/server/domains/issues/issue.routes.d.ts.map +1 -1
  159. package/dist/server/domains/issues/issue.routes.js +20 -38
  160. package/dist/server/domains/issues/issue.routes.js.map +1 -1
  161. package/dist/server/domains/issues/issue.service.d.ts +20 -44
  162. package/dist/server/domains/issues/issue.service.d.ts.map +1 -1
  163. package/dist/server/domains/issues/issue.service.js +26 -81
  164. package/dist/server/domains/issues/issue.service.js.map +1 -1
  165. package/dist/server/domains/issues/issue.status.d.ts +6 -10
  166. package/dist/server/domains/issues/issue.status.d.ts.map +1 -1
  167. package/dist/server/domains/issues/issue.status.js +3 -20
  168. package/dist/server/domains/issues/issue.status.js.map +1 -1
  169. package/dist/server/domains/issues/issue.store.d.ts +2 -0
  170. package/dist/server/domains/issues/issue.store.d.ts.map +1 -1
  171. package/dist/server/domains/issues/issue.store.js +2 -0
  172. package/dist/server/domains/issues/issue.store.js.map +1 -1
  173. package/dist/server/domains/issues/ports.d.ts +19 -36
  174. package/dist/server/domains/issues/ports.d.ts.map +1 -1
  175. package/dist/server/domains/issues/ports.js +0 -5
  176. package/dist/server/domains/issues/ports.js.map +1 -1
  177. package/dist/server/domains/notices/notice.planner.d.ts +2 -1
  178. package/dist/server/domains/notices/notice.planner.d.ts.map +1 -1
  179. package/dist/server/domains/notices/notice.planner.js +2 -1
  180. package/dist/server/domains/notices/notice.planner.js.map +1 -1
  181. package/dist/server/domains/notices/notice.rules.d.ts +1 -4
  182. package/dist/server/domains/notices/notice.rules.d.ts.map +1 -1
  183. package/dist/server/domains/notices/notice.rules.js +4 -5
  184. package/dist/server/domains/notices/notice.rules.js.map +1 -1
  185. package/dist/server/domains/plans/plan.ops.d.ts +3 -3
  186. package/dist/server/domains/plans/plan.ops.d.ts.map +1 -1
  187. package/dist/server/domains/plans/plan.ops.js +23 -13
  188. package/dist/server/domains/plans/plan.ops.js.map +1 -1
  189. package/dist/server/domains/projects/index.d.ts +1 -1
  190. package/dist/server/domains/projects/index.d.ts.map +1 -1
  191. package/dist/server/domains/projects/index.js.map +1 -1
  192. package/dist/server/domains/projects/project.events.d.ts +10 -0
  193. package/dist/server/domains/projects/project.events.d.ts.map +1 -0
  194. package/dist/server/domains/projects/project.events.js +2 -0
  195. package/dist/server/domains/projects/project.events.js.map +1 -0
  196. package/dist/server/domains/projects/project.routes.d.ts.map +1 -1
  197. package/dist/server/domains/projects/project.routes.js +1 -3
  198. package/dist/server/domains/projects/project.routes.js.map +1 -1
  199. package/dist/server/domains/projects/project.service.d.ts +1 -7
  200. package/dist/server/domains/projects/project.service.d.ts.map +1 -1
  201. package/dist/server/domains/projects/project.service.js +2 -17
  202. package/dist/server/domains/projects/project.service.js.map +1 -1
  203. package/dist/server/domains/projects/project.store.d.ts +0 -1
  204. package/dist/server/domains/projects/project.store.d.ts.map +1 -1
  205. package/dist/server/domains/projects/project.store.js +0 -1
  206. package/dist/server/domains/projects/project.store.js.map +1 -1
  207. package/dist/server/domains/reports/report.service.d.ts +1 -12
  208. package/dist/server/domains/reports/report.service.d.ts.map +1 -1
  209. package/dist/server/domains/reports/report.service.js +23 -79
  210. package/dist/server/domains/reports/report.service.js.map +1 -1
  211. package/dist/server/domains/statuses/event-types.d.ts +16 -0
  212. package/dist/server/domains/statuses/event-types.d.ts.map +1 -0
  213. package/dist/server/domains/statuses/event-types.js +31 -0
  214. package/dist/server/domains/statuses/event-types.js.map +1 -0
  215. package/dist/server/domains/statuses/index.d.ts +4 -0
  216. package/dist/server/domains/statuses/index.d.ts.map +1 -0
  217. package/dist/server/domains/statuses/index.js +4 -0
  218. package/dist/server/domains/statuses/index.js.map +1 -0
  219. package/dist/server/domains/statuses/status.catalog.d.ts +15 -0
  220. package/dist/server/domains/statuses/status.catalog.d.ts.map +1 -0
  221. package/dist/server/domains/statuses/status.catalog.js +119 -0
  222. package/dist/server/domains/statuses/status.catalog.js.map +1 -0
  223. package/dist/server/domains/statuses/status.events.d.ts +15 -0
  224. package/dist/server/domains/statuses/status.events.d.ts.map +1 -0
  225. package/dist/server/domains/statuses/status.events.js +2 -0
  226. package/dist/server/domains/statuses/status.events.js.map +1 -0
  227. package/dist/server/domains/statuses/status.fire.d.ts +48 -0
  228. package/dist/server/domains/statuses/status.fire.d.ts.map +1 -0
  229. package/dist/server/domains/statuses/status.fire.js +38 -0
  230. package/dist/server/domains/statuses/status.fire.js.map +1 -0
  231. package/dist/server/domains/subscriptions/subscription.routes.d.ts.map +1 -1
  232. package/dist/server/domains/subscriptions/subscription.routes.js +4 -2
  233. package/dist/server/domains/subscriptions/subscription.routes.js.map +1 -1
  234. package/dist/server/domains/subtasks/subtask.blocking.d.ts +4 -4
  235. package/dist/server/domains/subtasks/subtask.blocking.d.ts.map +1 -1
  236. package/dist/server/domains/subtasks/subtask.blocking.js +2 -10
  237. package/dist/server/domains/subtasks/subtask.blocking.js.map +1 -1
  238. package/dist/server/domains/subtasks/subtask.release.d.ts +5 -9
  239. package/dist/server/domains/subtasks/subtask.release.d.ts.map +1 -1
  240. package/dist/server/domains/subtasks/subtask.release.js +0 -4
  241. package/dist/server/domains/subtasks/subtask.release.js.map +1 -1
  242. package/dist/server/domains/subtasks/subtask.service.d.ts +1 -3
  243. package/dist/server/domains/subtasks/subtask.service.d.ts.map +1 -1
  244. package/dist/server/domains/subtasks/subtask.service.js +0 -12
  245. package/dist/server/domains/subtasks/subtask.service.js.map +1 -1
  246. package/dist/server/kernel/http.d.ts.map +1 -1
  247. package/dist/server/kernel/http.js +0 -3
  248. package/dist/server/kernel/http.js.map +1 -1
  249. package/dist/server/kernel/kinds.d.ts +24 -6
  250. package/dist/server/kernel/kinds.d.ts.map +1 -1
  251. package/dist/server/kernel/kinds.js +21 -1
  252. package/dist/server/kernel/kinds.js.map +1 -1
  253. package/dist/server/kernel/work.d.ts +8 -4
  254. package/dist/server/kernel/work.d.ts.map +1 -1
  255. package/dist/server/kernel/work.js +21 -10
  256. package/dist/server/kernel/work.js.map +1 -1
  257. package/dist/server/locales/en-US.d.ts +0 -9
  258. package/dist/server/locales/en-US.d.ts.map +1 -1
  259. package/dist/server/locales/en-US.js +0 -9
  260. package/dist/server/locales/en-US.js.map +1 -1
  261. package/dist/server/locales/zh-CN.d.ts.map +1 -1
  262. package/dist/server/locales/zh-CN.js +2 -11
  263. package/dist/server/locales/zh-CN.js.map +1 -1
  264. package/dist/server/providers/change-announcer.d.ts +27 -0
  265. package/dist/server/providers/change-announcer.d.ts.map +1 -0
  266. package/dist/server/providers/change-announcer.js +74 -0
  267. package/dist/server/providers/change-announcer.js.map +1 -0
  268. package/dist/server/providers/notifications.d.ts +1 -0
  269. package/dist/server/providers/notifications.d.ts.map +1 -1
  270. package/dist/server/providers/notifications.js +6 -120
  271. package/dist/server/providers/notifications.js.map +1 -1
  272. package/dist/server/providers/projects.d.ts +3 -8
  273. package/dist/server/providers/projects.d.ts.map +1 -1
  274. package/dist/server/providers/projects.js +14 -37
  275. package/dist/server/providers/projects.js.map +1 -1
  276. package/dist/server/routes/api.d.ts.map +1 -1
  277. package/dist/server/routes/api.js +0 -6
  278. package/dist/server/routes/api.js.map +1 -1
  279. package/dist/server/routes/schemas.d.ts +1 -27
  280. package/dist/server/routes/schemas.d.ts.map +1 -1
  281. package/dist/server/routes/schemas.js +23 -167
  282. package/dist/server/routes/schemas.js.map +1 -1
  283. package/dist/server/tokens.d.ts +12 -34
  284. package/dist/server/tokens.d.ts.map +1 -1
  285. package/dist/server/tokens.js +4 -16
  286. package/dist/server/tokens.js.map +1 -1
  287. package/dist/shared/access.d.ts +0 -1
  288. package/dist/shared/access.d.ts.map +1 -1
  289. package/dist/shared/access.js +2 -11
  290. package/dist/shared/access.js.map +1 -1
  291. package/dist/shared/issues.d.ts +14 -36
  292. package/dist/shared/issues.d.ts.map +1 -1
  293. package/dist/shared/issues.js +1 -0
  294. package/dist/shared/issues.js.map +1 -1
  295. package/dist/shared/kinds.d.ts +3 -1
  296. package/dist/shared/kinds.d.ts.map +1 -1
  297. package/dist/shared/kinds.js +1 -1
  298. package/dist/shared/locales/access.en-US.d.ts +0 -1
  299. package/dist/shared/locales/access.en-US.d.ts.map +1 -1
  300. package/dist/shared/locales/access.en-US.js +1 -2
  301. package/dist/shared/locales/access.en-US.js.map +1 -1
  302. package/dist/shared/locales/access.zh-CN.d.ts.map +1 -1
  303. package/dist/shared/locales/access.zh-CN.js +1 -2
  304. package/dist/shared/locales/access.zh-CN.js.map +1 -1
  305. package/dist/shared/plans.d.ts +6 -6
  306. package/dist/shared/plans.d.ts.map +1 -1
  307. package/dist/shared/plans.js +2 -1
  308. package/dist/shared/plans.js.map +1 -1
  309. package/dist/shared/projects.d.ts +0 -4
  310. package/dist/shared/projects.d.ts.map +1 -1
  311. package/dist/shared/projects.js.map +1 -1
  312. package/dist/shared/realtime.d.ts +9 -3
  313. package/dist/shared/realtime.d.ts.map +1 -1
  314. package/dist/shared/realtime.js +3 -2
  315. package/dist/shared/realtime.js.map +1 -1
  316. package/dist/shared/statuses.d.ts +42 -0
  317. package/dist/shared/statuses.d.ts.map +1 -0
  318. package/dist/shared/statuses.js +73 -0
  319. package/dist/shared/statuses.js.map +1 -0
  320. package/dist/shared/subtasks.d.ts +3 -3
  321. package/dist/shared/subtasks.d.ts.map +1 -1
  322. package/package.json +9 -17
  323. package/skills/nocobase-app-plugin-projects/SKILL.md +27 -51
  324. package/dist/client/hooks/use-workflow-leave-guard.d.ts +0 -3
  325. package/dist/client/hooks/use-workflow-leave-guard.d.ts.map +0 -1
  326. package/dist/client/hooks/use-workflow-leave-guard.js +0 -31
  327. package/dist/client/hooks/use-workflow-leave-guard.js.map +0 -1
  328. package/dist/client/lib/built-in-rule-editors.d.ts +0 -13
  329. package/dist/client/lib/built-in-rule-editors.d.ts.map +0 -1
  330. package/dist/client/lib/built-in-rule-editors.js +0 -86
  331. package/dist/client/lib/built-in-rule-editors.js.map +0 -1
  332. package/dist/client/lib/built-in-rule-types.d.ts +0 -3
  333. package/dist/client/lib/built-in-rule-types.d.ts.map +0 -1
  334. package/dist/client/lib/built-in-rule-types.js +0 -63
  335. package/dist/client/lib/built-in-rule-types.js.map +0 -1
  336. package/dist/client/lib/status-rule-types.d.ts +0 -60
  337. package/dist/client/lib/status-rule-types.d.ts.map +0 -1
  338. package/dist/client/lib/status-rule-types.js +0 -38
  339. package/dist/client/lib/status-rule-types.js.map +0 -1
  340. package/dist/client/lib/workflow-events.d.ts +0 -25
  341. package/dist/client/lib/workflow-events.d.ts.map +0 -1
  342. package/dist/client/lib/workflow-events.js +0 -30
  343. package/dist/client/lib/workflow-events.js.map +0 -1
  344. package/dist/client/pages/config/workflow-detail.d.ts +0 -10
  345. package/dist/client/pages/config/workflow-detail.d.ts.map +0 -1
  346. package/dist/client/pages/config/workflow-detail.js +0 -207
  347. package/dist/client/pages/config/workflow-detail.js.map +0 -1
  348. package/dist/client/pages/config/workflows/flow-editor.d.ts +0 -15
  349. package/dist/client/pages/config/workflows/flow-editor.d.ts.map +0 -1
  350. package/dist/client/pages/config/workflows/flow-editor.js +0 -76
  351. package/dist/client/pages/config/workflows/flow-editor.js.map +0 -1
  352. package/dist/client/pages/config/workflows/status-rules.d.ts +0 -21
  353. package/dist/client/pages/config/workflows/status-rules.d.ts.map +0 -1
  354. package/dist/client/pages/config/workflows/status-rules.js +0 -203
  355. package/dist/client/pages/config/workflows/status-rules.js.map +0 -1
  356. package/dist/client/pages/config/workflows/transitions-matrix.d.ts +0 -20
  357. package/dist/client/pages/config/workflows/transitions-matrix.d.ts.map +0 -1
  358. package/dist/client/pages/config/workflows/transitions-matrix.js +0 -114
  359. package/dist/client/pages/config/workflows/transitions-matrix.js.map +0 -1
  360. package/dist/client/pages/config/workflows/use-status-name.d.ts +0 -4
  361. package/dist/client/pages/config/workflows/use-status-name.d.ts.map +0 -1
  362. package/dist/client/pages/config/workflows/use-status-name.js +0 -17
  363. package/dist/client/pages/config/workflows/use-status-name.js.map +0 -1
  364. package/dist/client/pages/config/workflows/workflow-diagram.d.ts +0 -17
  365. package/dist/client/pages/config/workflows/workflow-diagram.d.ts.map +0 -1
  366. package/dist/client/pages/config/workflows/workflow-diagram.js +0 -298
  367. package/dist/client/pages/config/workflows/workflow-diagram.js.map +0 -1
  368. package/dist/client/pages/config/workflows/workflow-model.d.ts +0 -157
  369. package/dist/client/pages/config/workflows/workflow-model.d.ts.map +0 -1
  370. package/dist/client/pages/config/workflows/workflow-model.js +0 -403
  371. package/dist/client/pages/config/workflows/workflow-model.js.map +0 -1
  372. package/dist/client/pages/config/workflows/workflow-views.d.ts +0 -31
  373. package/dist/client/pages/config/workflows/workflow-views.d.ts.map +0 -1
  374. package/dist/client/pages/config/workflows/workflow-views.js +0 -76
  375. package/dist/client/pages/config/workflows/workflow-views.js.map +0 -1
  376. package/dist/client/pages/config/workflows.d.ts +0 -8
  377. package/dist/client/pages/config/workflows.d.ts.map +0 -1
  378. package/dist/client/pages/config/workflows.js +0 -139
  379. package/dist/client/pages/config/workflows.js.map +0 -1
  380. package/dist/client/pages/issues/detail/start-dialog.d.ts +0 -20
  381. package/dist/client/pages/issues/detail/start-dialog.d.ts.map +0 -1
  382. package/dist/client/pages/issues/detail/start-dialog.js +0 -31
  383. package/dist/client/pages/issues/detail/start-dialog.js.map +0 -1
  384. package/dist/client/pages/projects/workflow-select.d.ts +0 -14
  385. package/dist/client/pages/projects/workflow-select.d.ts.map +0 -1
  386. package/dist/client/pages/projects/workflow-select.js +0 -34
  387. package/dist/client/pages/projects/workflow-select.js.map +0 -1
  388. package/dist/server/domains/approvals/approval.events.d.ts +0 -47
  389. package/dist/server/domains/approvals/approval.events.d.ts.map +0 -1
  390. package/dist/server/domains/approvals/approval.events.js +0 -2
  391. package/dist/server/domains/approvals/approval.events.js.map +0 -1
  392. package/dist/server/domains/approvals/approval.lifecycle.d.ts +0 -8
  393. package/dist/server/domains/approvals/approval.lifecycle.d.ts.map +0 -1
  394. package/dist/server/domains/approvals/approval.lifecycle.js +0 -54
  395. package/dist/server/domains/approvals/approval.lifecycle.js.map +0 -1
  396. package/dist/server/domains/approvals/approval.routes.d.ts +0 -10
  397. package/dist/server/domains/approvals/approval.routes.d.ts.map +0 -1
  398. package/dist/server/domains/approvals/approval.routes.js +0 -87
  399. package/dist/server/domains/approvals/approval.routes.js.map +0 -1
  400. package/dist/server/domains/approvals/approval.service.d.ts +0 -72
  401. package/dist/server/domains/approvals/approval.service.d.ts.map +0 -1
  402. package/dist/server/domains/approvals/approval.service.js +0 -261
  403. package/dist/server/domains/approvals/approval.service.js.map +0 -1
  404. package/dist/server/domains/approvals/approval.store.d.ts +0 -42
  405. package/dist/server/domains/approvals/approval.store.d.ts.map +0 -1
  406. package/dist/server/domains/approvals/approval.store.js +0 -66
  407. package/dist/server/domains/approvals/approval.store.js.map +0 -1
  408. package/dist/server/domains/approvals/index.d.ts +0 -4
  409. package/dist/server/domains/approvals/index.d.ts.map +0 -1
  410. package/dist/server/domains/approvals/index.js +0 -3
  411. package/dist/server/domains/approvals/index.js.map +0 -1
  412. package/dist/server/domains/checklists/checklist.routes.d.ts +0 -9
  413. package/dist/server/domains/checklists/checklist.routes.d.ts.map +0 -1
  414. package/dist/server/domains/checklists/checklist.routes.js +0 -62
  415. package/dist/server/domains/checklists/checklist.routes.js.map +0 -1
  416. package/dist/server/domains/checklists/checklist.service.d.ts +0 -26
  417. package/dist/server/domains/checklists/checklist.service.d.ts.map +0 -1
  418. package/dist/server/domains/checklists/checklist.service.js +0 -80
  419. package/dist/server/domains/checklists/checklist.service.js.map +0 -1
  420. package/dist/server/domains/checklists/checklist.store.d.ts +0 -32
  421. package/dist/server/domains/checklists/checklist.store.d.ts.map +0 -1
  422. package/dist/server/domains/checklists/checklist.store.js +0 -66
  423. package/dist/server/domains/checklists/checklist.store.js.map +0 -1
  424. package/dist/server/domains/checklists/index.d.ts +0 -4
  425. package/dist/server/domains/checklists/index.d.ts.map +0 -1
  426. package/dist/server/domains/checklists/index.js +0 -4
  427. package/dist/server/domains/checklists/index.js.map +0 -1
  428. package/dist/server/domains/workflows/built-in-rule-types.d.ts +0 -40
  429. package/dist/server/domains/workflows/built-in-rule-types.d.ts.map +0 -1
  430. package/dist/server/domains/workflows/built-in-rule-types.js +0 -260
  431. package/dist/server/domains/workflows/built-in-rule-types.js.map +0 -1
  432. package/dist/server/domains/workflows/event-types.d.ts +0 -21
  433. package/dist/server/domains/workflows/event-types.d.ts.map +0 -1
  434. package/dist/server/domains/workflows/event-types.js +0 -31
  435. package/dist/server/domains/workflows/event-types.js.map +0 -1
  436. package/dist/server/domains/workflows/index.d.ts +0 -10
  437. package/dist/server/domains/workflows/index.d.ts.map +0 -1
  438. package/dist/server/domains/workflows/index.js +0 -10
  439. package/dist/server/domains/workflows/index.js.map +0 -1
  440. package/dist/server/domains/workflows/rule-types.d.ts +0 -129
  441. package/dist/server/domains/workflows/rule-types.d.ts.map +0 -1
  442. package/dist/server/domains/workflows/rule-types.js +0 -33
  443. package/dist/server/domains/workflows/rule-types.js.map +0 -1
  444. package/dist/server/domains/workflows/templates.d.ts +0 -62
  445. package/dist/server/domains/workflows/templates.d.ts.map +0 -1
  446. package/dist/server/domains/workflows/templates.js +0 -63
  447. package/dist/server/domains/workflows/templates.js.map +0 -1
  448. package/dist/server/domains/workflows/workflow.diff.d.ts +0 -14
  449. package/dist/server/domains/workflows/workflow.diff.d.ts.map +0 -1
  450. package/dist/server/domains/workflows/workflow.diff.js +0 -80
  451. package/dist/server/domains/workflows/workflow.diff.js.map +0 -1
  452. package/dist/server/domains/workflows/workflow.events.d.ts +0 -26
  453. package/dist/server/domains/workflows/workflow.events.d.ts.map +0 -1
  454. package/dist/server/domains/workflows/workflow.events.js +0 -2
  455. package/dist/server/domains/workflows/workflow.events.js.map +0 -1
  456. package/dist/server/domains/workflows/workflow.fire.d.ts +0 -38
  457. package/dist/server/domains/workflows/workflow.fire.d.ts.map +0 -1
  458. package/dist/server/domains/workflows/workflow.fire.js +0 -57
  459. package/dist/server/domains/workflows/workflow.fire.js.map +0 -1
  460. package/dist/server/domains/workflows/workflow.registry.d.ts +0 -27
  461. package/dist/server/domains/workflows/workflow.registry.d.ts.map +0 -1
  462. package/dist/server/domains/workflows/workflow.registry.js +0 -132
  463. package/dist/server/domains/workflows/workflow.registry.js.map +0 -1
  464. package/dist/server/domains/workflows/workflow.routes.d.ts +0 -6
  465. package/dist/server/domains/workflows/workflow.routes.d.ts.map +0 -1
  466. package/dist/server/domains/workflows/workflow.routes.js +0 -148
  467. package/dist/server/domains/workflows/workflow.routes.js.map +0 -1
  468. package/dist/server/domains/workflows/workflow.rules.d.ts +0 -14
  469. package/dist/server/domains/workflows/workflow.rules.d.ts.map +0 -1
  470. package/dist/server/domains/workflows/workflow.rules.js +0 -212
  471. package/dist/server/domains/workflows/workflow.rules.js.map +0 -1
  472. package/dist/server/domains/workflows/workflow.service.d.ts +0 -71
  473. package/dist/server/domains/workflows/workflow.service.d.ts.map +0 -1
  474. package/dist/server/domains/workflows/workflow.service.js +0 -366
  475. package/dist/server/domains/workflows/workflow.service.js.map +0 -1
  476. package/dist/server/domains/workflows/workflow.store.d.ts +0 -33
  477. package/dist/server/domains/workflows/workflow.store.d.ts.map +0 -1
  478. package/dist/server/domains/workflows/workflow.store.js +0 -148
  479. package/dist/server/domains/workflows/workflow.store.js.map +0 -1
  480. package/dist/shared/approvals.d.ts +0 -37
  481. package/dist/shared/approvals.d.ts.map +0 -1
  482. package/dist/shared/approvals.js +0 -4
  483. package/dist/shared/approvals.js.map +0 -1
  484. package/dist/shared/checklists.d.ts +0 -27
  485. package/dist/shared/checklists.d.ts.map +0 -1
  486. package/dist/shared/checklists.js +0 -7
  487. package/dist/shared/checklists.js.map +0 -1
  488. package/dist/shared/workflows.d.ts +0 -276
  489. package/dist/shared/workflows.d.ts.map +0 -1
  490. package/dist/shared/workflows.js +0 -151
  491. package/dist/shared/workflows.js.map +0 -1
@@ -1,366 +0,0 @@
1
- import { ANY_STATUS, BUILTIN_STATUSES, DEFAULT_COMMENT_RUN_LIMIT, INITIAL_STATUS, WORKFLOW_NAME_MAX, } from '../../../shared/workflows.js';
2
- import { requireSetting } from '../../access/viewer.js';
3
- import { isUniqueViolation, unique } from '../../kernel/db.js';
4
- import { conflict, invalid, notFound } from '../../kernel/errors.js';
5
- import { optionalText, requiredText } from '../../kernel/validate.js';
6
- import { compile } from '../../lifecycle/index.js';
7
- import './workflow.events.js';
8
- import { checkDefinition } from './workflow.rules.js';
9
- import { ruleMessage } from './built-in-rule-types.js';
10
- import { readSettings, writeSettings } from '../settings/settings.store.js';
11
- import { previewRules } from './workflow.diff.js';
12
- import { deleteWorkflow, findBuiltInWorkflow, findDefaultWorkflow, findWorkflow, insertWorkflow, issueStatusCounts, listWorkflows, projectCounts, projectsOnWorkflow, setDefaultWorkflow, updateWorkflow, workflowIdOfProject, } from './workflow.store.js';
13
- /**
14
- * The statuses of every project while no workflow is the default (the plugin ships none): the built-in statuses,
15
- * people move freely and the system closes merged work. A new workflow may start from it (`copyFrom: null`).
16
- */
17
- const FALLBACK = {
18
- states: BUILTIN_STATUSES,
19
- transitions: [
20
- { from: ANY_STATUS, to: ANY_STATUS, actors: ['user'] },
21
- { from: ANY_STATUS, to: 'done', actors: ['system'] },
22
- ],
23
- };
24
- /**
25
- * The ways a new issue may start: none while no status carries a `startOption` rule; otherwise the initial status
26
- * first, then every status carrying one, in the workflow's order.
27
- */
28
- function startsOf(definition, byKey) {
29
- const offered = [];
30
- for (const state of definition.states) {
31
- const rule = state.rules?.find((item) => item.type === 'startOption');
32
- const status = byKey.get(state.key);
33
- if (!rule || !status)
34
- continue;
35
- const config = ('config' in rule ? (rule.config ?? {}) : {});
36
- offered.push({
37
- status,
38
- label: ruleMessage(config.label),
39
- hint: ruleMessage(config.hint),
40
- });
41
- }
42
- if (offered.length === 0)
43
- return [];
44
- const initial = offered.find((option) => option.status.key === INITIAL_STATUS);
45
- const initialStatus = byKey.get(INITIAL_STATUS);
46
- return [
47
- initial ??
48
- (initialStatus
49
- ? { status: initialStatus, label: null, hint: null }
50
- : null),
51
- ...offered.filter((option) => option !== initial),
52
- ].filter((option) => option !== null);
53
- }
54
- function catalogOf(definition, rules) {
55
- const statuses = definition.states.map(({ key, name, category, color }) => ({ key, name, category, color }));
56
- const byKey = new Map(statuses.map((status) => [status.key, status]));
57
- return {
58
- statuses,
59
- initialStatus: INITIAL_STATUS,
60
- starts: startsOf(definition, byKey),
61
- category: (key) => byKey.get(key)?.category ?? null,
62
- machine: compile(definition),
63
- rules,
64
- commentRunLimit: definition.commentRunLimit ?? DEFAULT_COMMENT_RUN_LIMIT,
65
- };
66
- }
67
- function requireEditor(viewer) {
68
- requireSetting(viewer, 'pm.workflows', 'update', 'You may not change workflows.');
69
- }
70
- const nameOf = (value) => requiredText(value, 'name', WORKFLOW_NAME_MAX, 'INVALID_NAME');
71
- /** Runs a write whose unique name may already be taken. */
72
- async function uniquely(write) {
73
- try {
74
- return await write();
75
- }
76
- catch (error) {
77
- if (isUniqueViolation(error))
78
- throw conflict('WORKFLOW_EXISTS', 'A workflow with this name already exists.');
79
- throw error;
80
- }
81
- }
82
- /** The issues of `projectIds` (and, with `loose`, those without a project) per status `keep` does not contain. */
83
- async function lostStatuses(conn, projectIds, loose, keep) {
84
- const counts = await issueStatusCounts(conn, projectIds, loose);
85
- return counts.filter((entry) => !keep.has(entry.statusKey));
86
- }
87
- /**
88
- * 400 `WORKFLOW_STATUS_CONFLICT` when issues of `projectIds` (and, with `loose`, issues without a project) are in a
89
- * status `keep` does not contain.
90
- */
91
- async function assertStatusesKept(conn, projectIds, loose, keep, names) {
92
- const conflicts = (await lostStatuses(conn, projectIds, loose, keep)).map((entry) => ({
93
- ...entry,
94
- projectName: entry.projectId
95
- ? (names.get(entry.projectId) ?? null)
96
- : null,
97
- }));
98
- if (conflicts.length === 0)
99
- return;
100
- const details = { conflicts };
101
- throw conflict('WORKFLOW_STATUS_CONFLICT', `Issues are still in ${unique(conflicts.map((entry) => entry.statusKey)).join(', ')}; move them first.`, { ...details });
102
- }
103
- const keysOf = (definition) => new Set(definition.states.map((state) => state.key));
104
- export function createWorkflowService(deps) {
105
- const catalogs = new Map();
106
- let defaultId;
107
- const invalidate = () => {
108
- catalogs.clear();
109
- defaultId = undefined;
110
- };
111
- async function defaultWorkflow(conn) {
112
- return findDefaultWorkflow(conn);
113
- }
114
- async function catalogFor(conn, id) {
115
- if (id === null) {
116
- if (defaultId === undefined)
117
- defaultId = (await defaultWorkflow(conn))?.id ?? null;
118
- if (defaultId === null)
119
- return catalogOf(FALLBACK, deps.registry);
120
- id = defaultId;
121
- }
122
- const cached = catalogs.get(id);
123
- if (cached)
124
- return cached;
125
- const workflow = await findWorkflow(conn, id);
126
- // A project pointing at a missing workflow uses the default rather than failing every request.
127
- if (!workflow)
128
- return id === defaultId
129
- ? catalogOf(FALLBACK, deps.registry)
130
- : catalogFor(conn, null);
131
- const catalog = catalogOf(workflow.definition, deps.registry);
132
- catalogs.set(id, catalog);
133
- return catalog;
134
- }
135
- /** The list item: its projects, and a template's translated name and description while it keeps the template's. */
136
- function itemOf(workflow, counts) {
137
- const template = workflow.builtInKey
138
- ? deps.templates?.get(workflow.builtInKey)
139
- : undefined;
140
- const title = template?.title &&
141
- typeof template.title !== 'string' &&
142
- template.name === workflow.name
143
- ? { title: template.title }
144
- : {};
145
- const description = typeof template?.description === 'object' &&
146
- template.description.defaultValue === workflow.description
147
- ? {
148
- descriptionTitle: {
149
- key: template.description.key,
150
- ns: template.description.ns,
151
- },
152
- }
153
- : {};
154
- return {
155
- ...workflow,
156
- projectCount: (counts.get(workflow.id) ?? 0) +
157
- (workflow.isDefault ? (counts.get(null) ?? 0) : 0),
158
- ...title,
159
- ...description,
160
- };
161
- }
162
- async function withCount(conn, workflow) {
163
- return itemOf(workflow, await projectCounts(conn));
164
- }
165
- const INSTALLED = 'installedWorkflowTemplates';
166
- async function installedTemplates(conn) {
167
- const row = await readSettings(conn);
168
- const raw = typeof row?.values === 'string'
169
- ? JSON.parse(row.values)
170
- : (row?.values ?? {});
171
- const values = (raw && typeof raw === 'object' ? raw : {});
172
- const keys = Array.isArray(values[INSTALLED])
173
- ? values[INSTALLED].filter((key) => typeof key === 'string')
174
- : [];
175
- return { values, keys };
176
- }
177
- async function existing(conn, id) {
178
- const workflow = await findWorkflow(conn, id);
179
- if (!workflow)
180
- throw notFound('Workflow');
181
- return workflow;
182
- }
183
- /** The projects and loose issues a workflow's statuses apply to. */
184
- async function usersOf(conn, workflow) {
185
- const projects = [
186
- ...(await projectsOnWorkflow(conn, workflow.id)),
187
- ...(workflow.isDefault ? await projectsOnWorkflow(conn, null) : []),
188
- ];
189
- return {
190
- projectIds: projects.map((project) => project.id),
191
- names: new Map(projects.map((project) => [project.id, project.name])),
192
- loose: workflow.isDefault,
193
- };
194
- }
195
- /** Writes and announces a change; the cache is dropped once it committed. */
196
- async function write(fn) {
197
- try {
198
- return await deps.tx.run(fn);
199
- }
200
- finally {
201
- invalidate();
202
- }
203
- }
204
- return {
205
- async list() {
206
- const conn = deps.tx.read();
207
- const counts = await projectCounts(conn);
208
- return (await listWorkflows(conn)).map((workflow) => itemOf(workflow, counts));
209
- },
210
- async get(_viewer, id) {
211
- const conn = deps.tx.read();
212
- return withCount(conn, await existing(conn, id));
213
- },
214
- async create(viewer, input) {
215
- requireEditor(viewer);
216
- const name = nameOf(input.name);
217
- const copyFrom = input.copyFrom ?? null;
218
- if (copyFrom !== null && typeof copyFrom !== 'string')
219
- throw invalid('INVALID_FIELD', 'copyFrom names the workflow to copy, or is null for the built-in statuses.');
220
- const id = deps.ids.next();
221
- await uniquely(() => write(async (tx) => {
222
- const source = copyFrom === null
223
- ? { description: null, definition: FALLBACK }
224
- : await existing(tx.conn, copyFrom);
225
- await insertWorkflow(tx.conn, {
226
- id,
227
- name,
228
- description: source.description,
229
- definition: source.definition,
230
- });
231
- tx.emit({ type: 'workflow.changed', workflowId: id });
232
- }));
233
- const conn = deps.tx.read();
234
- return withCount(conn, await existing(conn, id));
235
- },
236
- async update(viewer, id, input) {
237
- requireEditor(viewer);
238
- if (!Number.isInteger(input.revision))
239
- throw invalid('INVALID_FIELD', 'revision is required.');
240
- await uniquely(() => write(async (tx) => {
241
- const before = await existing(tx.conn, id);
242
- const values = {
243
- ...(input.name === undefined ? {} : { name: nameOf(input.name) }),
244
- ...(input.description === undefined
245
- ? {}
246
- : {
247
- description: optionalText(input.description, 'description', 2000),
248
- }),
249
- };
250
- if (input.definition !== undefined) {
251
- const definition = checkDefinition(input.definition, before.definition, deps.registry, deps.kinds, deps.ruleTypes, deps.events);
252
- const users = await usersOf(tx.conn, before);
253
- await assertStatusesKept(tx.conn, users.projectIds, users.loose, keysOf(definition), users.names);
254
- values.definition = definition;
255
- }
256
- if (!(await updateWorkflow(tx.conn, id, input.revision, values)))
257
- throw conflict('REVISION_CONFLICT', 'The workflow was changed meanwhile.');
258
- tx.emit({ type: 'workflow.changed', workflowId: id });
259
- }));
260
- const conn = deps.tx.read();
261
- return withCount(conn, await existing(conn, id));
262
- },
263
- async remove(viewer, id) {
264
- requireEditor(viewer);
265
- await write(async (tx) => {
266
- const workflow = await withCount(tx.conn, await existing(tx.conn, id));
267
- if (workflow.isDefault)
268
- throw conflict('WORKFLOW_IN_USE', 'The default workflow cannot be deleted; make another one the default first.');
269
- if (workflow.projectCount > 0)
270
- throw conflict('WORKFLOW_IN_USE', `${workflow.projectCount} projects use this workflow.`, { projectCount: workflow.projectCount });
271
- await deleteWorkflow(tx.conn, id);
272
- tx.emit({ type: 'workflow.changed', workflowId: id });
273
- });
274
- },
275
- async setDefault(viewer, id) {
276
- requireEditor(viewer);
277
- await write(async (tx) => {
278
- const next = await existing(tx.conn, id);
279
- if (next.isDefault)
280
- return;
281
- const current = await defaultWorkflow(tx.conn);
282
- // Projects without a workflow of their own, and issues without a project, move to the new default.
283
- const projects = await projectsOnWorkflow(tx.conn, null);
284
- await assertStatusesKept(tx.conn, projects.map((project) => project.id), true, keysOf(next.definition), new Map(projects.map((project) => [project.id, project.name])));
285
- await setDefaultWorkflow(tx.conn, id);
286
- tx.emit({ type: 'workflow.changed', workflowId: id });
287
- if (current)
288
- tx.emit({ type: 'workflow.changed', workflowId: current.id });
289
- });
290
- const conn = deps.tx.read();
291
- return withCount(conn, await existing(conn, id));
292
- },
293
- async preview(viewer, id, input) {
294
- requireEditor(viewer);
295
- const conn = deps.tx.read();
296
- const before = await existing(conn, id);
297
- const definition = checkDefinition(input?.definition, before.definition, deps.registry, deps.kinds, deps.ruleTypes, deps.events);
298
- return previewRules(before.definition, definition, deps.ruleTypes);
299
- },
300
- async installTemplate(template) {
301
- try {
302
- return await write(async (tx) => {
303
- const { values, keys } = await installedTemplates(tx.conn);
304
- if (keys.includes(template.key))
305
- return false;
306
- let created = false;
307
- if (!(await findBuiltInWorkflow(tx.conn, template.key))) {
308
- const definition = checkDefinition(template.definition, null, deps.registry, deps.kinds, deps.ruleTypes, deps.events);
309
- const taken = (await listWorkflows(tx.conn)).some((workflow) => workflow.name === template.name);
310
- const id = deps.ids.next();
311
- await insertWorkflow(tx.conn, {
312
- id,
313
- name: taken
314
- ? `${template.name} (${template.key})`
315
- : template.name,
316
- description: typeof template.description === 'object'
317
- ? template.description.defaultValue
318
- : (template.description ?? null),
319
- definition,
320
- builtInKey: template.key,
321
- });
322
- tx.emit({ type: 'workflow.changed', workflowId: id });
323
- created = true;
324
- // The first default: projects without a workflow of their own leave the built-in statuses for it,
325
- // unless some issue is in a status it lacks.
326
- if (template.makeDefault &&
327
- !(await defaultWorkflow(tx.conn)) &&
328
- (await lostStatuses(tx.conn, (await projectsOnWorkflow(tx.conn, null)).map((project) => project.id), true, keysOf(definition))).length === 0)
329
- await setDefaultWorkflow(tx.conn, id);
330
- }
331
- await writeSettings(tx.conn, {
332
- values: { ...values, [INSTALLED]: [...keys, template.key] },
333
- });
334
- return created;
335
- });
336
- }
337
- catch (error) {
338
- // Another instance installed it at the same moment.
339
- if (isUniqueViolation(error))
340
- return false;
341
- throw error;
342
- }
343
- },
344
- catalogs: {
345
- async forProject(conn, projectId) {
346
- if (projectId === null)
347
- return catalogFor(conn, null);
348
- return catalogFor(conn, (await workflowIdOfProject(conn, projectId)) ?? null);
349
- },
350
- },
351
- projects: {
352
- async requireExisting(conn, id) {
353
- if (!(await findWorkflow(conn, id)))
354
- throw invalid('INVALID_WORKFLOW', 'workflowId names no workflow.');
355
- },
356
- async assertCompatible(conn, projectId, workflowId) {
357
- const catalog = await catalogFor(conn, workflowId);
358
- await assertStatusesKept(conn, [projectId], false, new Set(catalog.statuses.map((status) => status.key)), new Map());
359
- },
360
- switched(tx, workflowId) {
361
- tx.emit({ type: 'workflow.changed', workflowId });
362
- },
363
- },
364
- };
365
- }
366
- //# sourceMappingURL=workflow.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.service.js","sourceRoot":"","sources":["../../../../server/domains/workflows/workflow.service.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- /**
2
- * `pmWorkflows`, and the reads across projects and issues that changing a workflow needs.
3
- */
4
- import { type DatabaseConnection } from '@nocobase/db';
5
- import type { Workflow } from '../../../shared/workflows.js';
6
- export declare const WORKFLOWS = "pmWorkflows";
7
- export declare function listWorkflows(conn: DatabaseConnection): Promise<Workflow[]>;
8
- export declare function findWorkflow(conn: DatabaseConnection, id: string): Promise<Workflow | undefined>;
9
- export declare function findDefaultWorkflow(conn: DatabaseConnection): Promise<Workflow | undefined>;
10
- export declare function findBuiltInWorkflow(conn: DatabaseConnection, builtInKey: string): Promise<Workflow | undefined>;
11
- export declare function insertWorkflow(conn: DatabaseConnection, workflow: Pick<Workflow, 'id' | 'name' | 'description' | 'definition'> & {
12
- readonly builtInKey?: string;
13
- }): Promise<void>;
14
- /** Writes when the row is still at `revision` (the revision then moves on); false when it moved meanwhile. */
15
- export declare function updateWorkflow(conn: DatabaseConnection, id: string, revision: number, values: Partial<Pick<Workflow, 'name' | 'description' | 'definition'>>): Promise<boolean>;
16
- export declare function setDefaultWorkflow(conn: DatabaseConnection, id: string): Promise<void>;
17
- export declare function deleteWorkflow(conn: DatabaseConnection, id: string): Promise<void>;
18
- /** The workflow a project chose; null for the default, undefined when the project does not exist. */
19
- export declare function workflowIdOfProject(conn: DatabaseConnection, projectId: string): Promise<string | null | undefined>;
20
- /** Projects per workflow id; the key null counts projects on the default. */
21
- export declare function projectCounts(conn: DatabaseConnection): Promise<Map<string | null, number>>;
22
- /** The projects on a workflow (`null`: on the default, choosing none), with their names. */
23
- export declare function projectsOnWorkflow(conn: DatabaseConnection, workflowId: string | null): Promise<{
24
- id: string;
25
- name: string;
26
- }[]>;
27
- /** Issues (not deleted) per project and status, among `projectIds`; `includeLoose` adds issues without a project. */
28
- export declare function issueStatusCounts(conn: DatabaseConnection, projectIds: readonly string[], includeLoose: boolean): Promise<{
29
- projectId: string | null;
30
- statusKey: string;
31
- count: number;
32
- }[]>;
33
- //# sourceMappingURL=workflow.store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.store.d.ts","sourceRoot":"","sources":["../../../../server/domains/workflows/workflow.store.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,KAAK,EACV,QAAQ,EAET,MAAM,8BAA8B,CAAC;AAGtC,eAAO,MAAM,SAAS,gBAAgB,CAAC;AAuCvC,wBAAsB,aAAa,CACjC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAKrB;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,kBAAkB,EACxB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAG/B;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAO/B;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,kBAAkB,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAG/B;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,aAAa,GAAG,YAAY,CAAC,GAAG;IACvE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,GACA,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,8GAA8G;AAC9G,wBAAsB,cAAc,CAClC,IAAI,EAAE,kBAAkB,EACxB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC,GACrE,OAAO,CAAC,OAAO,CAAC,CAalB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,kBAAkB,EACxB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,kBAAkB,EACxB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,qGAAqG;AACrG,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,kBAAkB,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAQpC;AAED,6EAA6E;AAC7E,wBAAsB,aAAa,CACjC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAerC;AAED,4FAA4F;AAC5F,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,kBAAkB,EACxB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CASzC;AAED,qHAAqH;AACrH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,kBAAkB,EACxB,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CA4B3E"}
@@ -1,148 +0,0 @@
1
- /**
2
- * `pmWorkflows`, and the reads across projects and issues that changing a workflow needs.
3
- */
4
- import { RepositoryError } from '@nocobase/db';
5
- import { oneOf } from '../../kernel/db.js';
6
- export const WORKFLOWS = 'pmWorkflows';
7
- const PROJECTS = 'pmProjects';
8
- const ISSUES = 'pmIssues';
9
- const workflows = (conn) => conn.repository(WORKFLOWS);
10
- const iso = (value) => value instanceof Date ? value.toISOString() : new Date(value).toISOString();
11
- function toWorkflow(row) {
12
- return {
13
- id: row.id,
14
- name: row.name,
15
- description: row.description,
16
- isDefault: Boolean(row.isDefault),
17
- builtInKey: row.builtInKey,
18
- definition: typeof row.definition === 'string'
19
- ? JSON.parse(row.definition)
20
- : row.definition,
21
- revision: Number(row.revision),
22
- createdAt: iso(row.createdAt),
23
- updatedAt: iso(row.updatedAt),
24
- };
25
- }
26
- export async function listWorkflows(conn) {
27
- const rows = await workflows(conn).findMany({
28
- sort: (sort) => [sort.field('isDefault').desc(), sort.field('name').asc()],
29
- });
30
- return rows.map(toWorkflow);
31
- }
32
- export async function findWorkflow(conn, id) {
33
- const row = await workflows(conn).findOne({ filter: { id } });
34
- return row ? toWorkflow(row) : undefined;
35
- }
36
- export async function findDefaultWorkflow(conn) {
37
- const [row] = await workflows(conn).findMany({
38
- filter: { isDefault: true },
39
- sort: (sort) => sort.field('createdAt').asc(),
40
- limit: 1,
41
- });
42
- return row ? toWorkflow(row) : undefined;
43
- }
44
- export async function findBuiltInWorkflow(conn, builtInKey) {
45
- const row = await workflows(conn).findOne({ filter: { builtInKey } });
46
- return row ? toWorkflow(row) : undefined;
47
- }
48
- export async function insertWorkflow(conn, workflow) {
49
- const now = new Date();
50
- await workflows(conn).createOne({
51
- values: {
52
- ...workflow,
53
- isDefault: false,
54
- builtInKey: workflow.builtInKey ?? null,
55
- createdAt: now,
56
- updatedAt: now,
57
- },
58
- });
59
- }
60
- /** Writes when the row is still at `revision` (the revision then moves on); false when it moved meanwhile. */
61
- export async function updateWorkflow(conn, id, revision, values) {
62
- try {
63
- await workflows(conn).updateOne({
64
- filter: { id },
65
- ifVersion: revision,
66
- values: { ...values, updatedAt: new Date() },
67
- });
68
- return true;
69
- }
70
- catch (error) {
71
- if (error instanceof RepositoryError && error.code === 'VERSION_CONFLICT')
72
- return false;
73
- throw error;
74
- }
75
- }
76
- export async function setDefaultWorkflow(conn, id) {
77
- await workflows(conn).updateMany({
78
- filter: { isDefault: true },
79
- values: { isDefault: false, updatedAt: new Date() },
80
- });
81
- await workflows(conn).updateOne({
82
- filter: { id },
83
- values: { isDefault: true, updatedAt: new Date() },
84
- });
85
- }
86
- export async function deleteWorkflow(conn, id) {
87
- await workflows(conn).deleteOne({ filter: { id } });
88
- }
89
- /** The workflow a project chose; null for the default, undefined when the project does not exist. */
90
- export async function workflowIdOfProject(conn, projectId) {
91
- const row = await conn
92
- .repository(PROJECTS)
93
- .findOne({
94
- filter: { id: projectId },
95
- select: (select) => select.fields('workflowId'),
96
- });
97
- return row ? row.workflowId : undefined;
98
- }
99
- /** Projects per workflow id; the key null counts projects on the default. */
100
- export async function projectCounts(conn) {
101
- const groups = await conn
102
- .repository(PROJECTS)
103
- .groupBy({
104
- by: ['workflowId'],
105
- aggregate: (aggregate) => ({ count: aggregate.count() }),
106
- });
107
- return new Map(groups.map((group) => [
108
- group.workflowId === null || group.workflowId === undefined
109
- ? null
110
- : String(group.workflowId),
111
- Number(group.count),
112
- ]));
113
- }
114
- /** The projects on a workflow (`null`: on the default, choosing none), with their names. */
115
- export async function projectsOnWorkflow(conn, workflowId) {
116
- return conn
117
- .repository(PROJECTS)
118
- .findMany({
119
- filter: (f) => f.string('workflowId').eq(workflowId),
120
- select: (select) => select.fields('id', 'name'),
121
- });
122
- }
123
- /** Issues (not deleted) per project and status, among `projectIds`; `includeLoose` adds issues without a project. */
124
- export async function issueStatusCounts(conn, projectIds, includeLoose) {
125
- if (projectIds.length === 0 && !includeLoose)
126
- return [];
127
- const groups = await conn
128
- .repository(ISSUES)
129
- .groupBy({
130
- by: ['projectId', 'statusKey'],
131
- aggregate: (aggregate) => ({ count: aggregate.count() }),
132
- filter: (f) => f.and([
133
- f.date('deletedAt').empty(),
134
- f.or([
135
- oneOf(f, 'projectId', projectIds),
136
- ...(includeLoose ? [f.string('projectId').eq(null)] : []),
137
- ]),
138
- ]),
139
- });
140
- return groups.map((group) => ({
141
- projectId: group.projectId === null || group.projectId === undefined
142
- ? null
143
- : String(group.projectId),
144
- statusKey: String(group.statusKey),
145
- count: Number(group.count),
146
- }));
147
- }
148
- //# sourceMappingURL=workflow.store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.store.js","sourceRoot":"","sources":["../../../../server/domains/workflows/workflow.store.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- /**
2
- * Approval requests: a status change a workflow holds until one of its approvers approves it. A request is pending
3
- * until it is approved (the issue moves), rejected (it stays), withdrawn by who asked, or stale: the issue left the
4
- * status meanwhile, or the move's conditions no longer hold when it is approved.
5
- */
6
- import type { ApproverRole } from './workflows.js';
7
- export type ApprovalStatus = 'pending' | 'approved' | 'rejected' | 'withdrawn' | 'stale';
8
- export interface ApprovalRequest {
9
- readonly id: string;
10
- readonly issueId: string;
11
- readonly issueIdentifier: string | null;
12
- readonly issueTitle: string | null;
13
- readonly fromStatus: string;
14
- readonly toStatus: string;
15
- readonly requestedByType: string;
16
- readonly requestedById: string;
17
- readonly requestedByName: string | null;
18
- /** The roles the workflow named. */
19
- readonly approvers: readonly ApproverRole[];
20
- /** Who they resolved to when the request was made; any one of them decides. */
21
- readonly approverUserIds: readonly string[];
22
- readonly approverNames: readonly string[];
23
- readonly status: ApprovalStatus;
24
- readonly decidedById: string | null;
25
- readonly decidedByName: string | null;
26
- readonly decidedAt: string | null;
27
- readonly comment: string | null;
28
- readonly createdAt: string;
29
- readonly updatedAt: string;
30
- }
31
- export interface DecideApprovalRequest {
32
- readonly comment?: string;
33
- }
34
- export declare const APPROVAL_COMMENT_MAX = 2000;
35
- /** How many decided requests the issue page lists (`IssueDetail.recentApprovals`). */
36
- export declare const RECENT_DECIDED_APPROVALS = 5;
37
- //# sourceMappingURL=approvals.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../shared/approvals.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,MAAM,cAAc,GACxB,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IAC5C,+EAA+E;IAC/E,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,sFAAsF;AACtF,eAAO,MAAM,wBAAwB,IAAI,CAAC"}
@@ -1,4 +0,0 @@
1
- export const APPROVAL_COMMENT_MAX = 2000;
2
- /** How many decided requests the issue page lists (`IssueDetail.recentApprovals`). */
3
- export const RECENT_DECIDED_APPROVALS = 5;
4
- //# sourceMappingURL=approvals.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../shared/approvals.ts"],"names":[],"mappings":"AAsCA,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAEzC,sFAAsF;AACtF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC"}