@ketvietlab/ketsuite 0.1.29 → 0.1.31

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 (781) hide show
  1. package/dist/cli.js +1 -1
  2. package/dist/modules/account_backend/index.js +0 -6
  3. package/dist/modules/account_backend/index.js.map +1 -1
  4. package/dist/modules/account_backend/screens/account-defaults.d.ts.map +1 -1
  5. package/dist/modules/account_backend/screens/account-defaults.js +1 -1
  6. package/dist/modules/account_backend/screens/account-defaults.js.map +1 -1
  7. package/dist/modules/account_backend/screens/account-form.d.ts.map +1 -1
  8. package/dist/modules/account_backend/screens/account-form.js +3 -1
  9. package/dist/modules/account_backend/screens/account-form.js.map +1 -1
  10. package/dist/modules/account_backend/screens/accounts-list.d.ts.map +1 -1
  11. package/dist/modules/account_backend/screens/accounts-list.js +1 -1
  12. package/dist/modules/account_backend/screens/accounts-list.js.map +1 -1
  13. package/dist/modules/account_backend/screens/customer-invoice-form.d.ts.map +1 -1
  14. package/dist/modules/account_backend/screens/customer-invoice-form.js +1 -1
  15. package/dist/modules/account_backend/screens/customer-invoice-form.js.map +1 -1
  16. package/dist/modules/account_backend/screens/customer-invoices-list.d.ts.map +1 -1
  17. package/dist/modules/account_backend/screens/customer-invoices-list.js +1 -1
  18. package/dist/modules/account_backend/screens/customer-invoices-list.js.map +1 -1
  19. package/dist/modules/account_backend/screens/journal-entries-list.d.ts.map +1 -1
  20. package/dist/modules/account_backend/screens/journal-entries-list.js +1 -1
  21. package/dist/modules/account_backend/screens/journal-entries-list.js.map +1 -1
  22. package/dist/modules/account_backend/screens/journal-entry-create.d.ts.map +1 -1
  23. package/dist/modules/account_backend/screens/journal-entry-create.js +1 -1
  24. package/dist/modules/account_backend/screens/journal-entry-create.js.map +1 -1
  25. package/dist/modules/account_backend/screens/journal-form.d.ts.map +1 -1
  26. package/dist/modules/account_backend/screens/journal-form.js +3 -3
  27. package/dist/modules/account_backend/screens/journal-form.js.map +1 -1
  28. package/dist/modules/account_backend/screens/journals-list.d.ts.map +1 -1
  29. package/dist/modules/account_backend/screens/journals-list.js +1 -1
  30. package/dist/modules/account_backend/screens/journals-list.js.map +1 -1
  31. package/dist/modules/account_backend/screens/move-detail.d.ts.map +1 -1
  32. package/dist/modules/account_backend/screens/move-detail.js +3 -1
  33. package/dist/modules/account_backend/screens/move-detail.js.map +1 -1
  34. package/dist/modules/account_backend/screens/opening-balances.d.ts.map +1 -1
  35. package/dist/modules/account_backend/screens/opening-balances.js +2 -2
  36. package/dist/modules/account_backend/screens/opening-balances.js.map +1 -1
  37. package/dist/modules/account_backend/screens/overview.js +4 -2
  38. package/dist/modules/account_backend/screens/overview.js.map +1 -1
  39. package/dist/modules/account_backend/screens/payment-form.d.ts.map +1 -1
  40. package/dist/modules/account_backend/screens/payment-form.js +1 -1
  41. package/dist/modules/account_backend/screens/payment-form.js.map +1 -1
  42. package/dist/modules/account_backend/screens/payment-term-form.d.ts.map +1 -1
  43. package/dist/modules/account_backend/screens/payment-term-form.js +4 -2
  44. package/dist/modules/account_backend/screens/payment-term-form.js.map +1 -1
  45. package/dist/modules/account_backend/screens/payment-terms-list.d.ts.map +1 -1
  46. package/dist/modules/account_backend/screens/payment-terms-list.js +1 -1
  47. package/dist/modules/account_backend/screens/payment-terms-list.js.map +1 -1
  48. package/dist/modules/account_backend/screens/payments-list.d.ts.map +1 -1
  49. package/dist/modules/account_backend/screens/payments-list.js +1 -1
  50. package/dist/modules/account_backend/screens/payments-list.js.map +1 -1
  51. package/dist/modules/account_backend/screens/period-closes.d.ts.map +1 -1
  52. package/dist/modules/account_backend/screens/period-closes.js +1 -1
  53. package/dist/modules/account_backend/screens/period-closes.js.map +1 -1
  54. package/dist/modules/account_backend/screens/tax-form.d.ts.map +1 -1
  55. package/dist/modules/account_backend/screens/tax-form.js +3 -1
  56. package/dist/modules/account_backend/screens/tax-form.js.map +1 -1
  57. package/dist/modules/account_backend/screens/taxes-list.d.ts.map +1 -1
  58. package/dist/modules/account_backend/screens/taxes-list.js +1 -1
  59. package/dist/modules/account_backend/screens/taxes-list.js.map +1 -1
  60. package/dist/modules/account_backend/screens/vendor-bill-form.d.ts.map +1 -1
  61. package/dist/modules/account_backend/screens/vendor-bill-form.js +1 -1
  62. package/dist/modules/account_backend/screens/vendor-bill-form.js.map +1 -1
  63. package/dist/modules/account_backend/screens/vendor-bills-list.d.ts.map +1 -1
  64. package/dist/modules/account_backend/screens/vendor-bills-list.js +1 -1
  65. package/dist/modules/account_backend/screens/vendor-bills-list.js.map +1 -1
  66. package/dist/modules/account_partner_backend/screens/accounting-terms.d.ts.map +1 -1
  67. package/dist/modules/account_partner_backend/screens/accounting-terms.js +1 -1
  68. package/dist/modules/account_partner_backend/screens/accounting-terms.js.map +1 -1
  69. package/dist/modules/activity_backend/index.d.ts.map +1 -1
  70. package/dist/modules/activity_backend/index.js +0 -2
  71. package/dist/modules/activity_backend/index.js.map +1 -1
  72. package/dist/modules/activity_backend/screens/activities-list.d.ts.map +1 -1
  73. package/dist/modules/activity_backend/screens/activities-list.js +1 -1
  74. package/dist/modules/activity_backend/screens/activities-list.js.map +1 -1
  75. package/dist/modules/address_backend/index.d.ts.map +1 -1
  76. package/dist/modules/address_backend/index.js +0 -2
  77. package/dist/modules/address_backend/index.js.map +1 -1
  78. package/dist/modules/address_backend/screens/catalogs-list.d.ts.map +1 -1
  79. package/dist/modules/address_backend/screens/catalogs-list.js +1 -1
  80. package/dist/modules/address_backend/screens/catalogs-list.js.map +1 -1
  81. package/dist/modules/attendance_backend/screens/credentials.d.ts.map +1 -1
  82. package/dist/modules/attendance_backend/screens/credentials.js +1 -1
  83. package/dist/modules/attendance_backend/screens/credentials.js.map +1 -1
  84. package/dist/modules/attendance_backend/screens/period.d.ts.map +1 -1
  85. package/dist/modules/attendance_backend/screens/period.js +1 -1
  86. package/dist/modules/attendance_backend/screens/period.js.map +1 -1
  87. package/dist/modules/backend/current-company.d.ts +4 -0
  88. package/dist/modules/backend/current-company.d.ts.map +1 -0
  89. package/dist/modules/backend/current-company.js +27 -0
  90. package/dist/modules/backend/current-company.js.map +1 -0
  91. package/dist/modules/backend/design/client/backend-shell.d.mts +2 -2
  92. package/dist/modules/backend/design/client/backend-shell.d.mts.map +1 -1
  93. package/dist/modules/backend/design/client/backend-shell.mjs +1 -1
  94. package/dist/modules/backend/design/client/backend-shell.mjs.map +4 -4
  95. package/dist/modules/backend/design/client/ket-table.d.mts +2 -2
  96. package/dist/modules/backend/design/client/ket-table.d.mts.map +1 -1
  97. package/dist/modules/backend/design/client/ket-table.mjs +1 -1
  98. package/dist/modules/backend/design/client/ket-table.mjs.map +3 -3
  99. package/dist/modules/backend/design/client/search-filter.d.mts +2 -2
  100. package/dist/modules/backend/design/client/search-filter.d.mts.map +1 -1
  101. package/dist/modules/backend/design/client/search-filter.mjs +1 -1
  102. package/dist/modules/backend/design/client/search-filter.mjs.map +3 -3
  103. package/dist/modules/backend/design/content.css +5 -5
  104. package/dist/modules/backend/design/controls.css +10 -36
  105. package/dist/modules/backend/design/forms.css +33 -188
  106. package/dist/modules/backend/design/lists.css +1 -50
  107. package/dist/modules/backend/index.d.ts +1 -0
  108. package/dist/modules/backend/index.d.ts.map +1 -1
  109. package/dist/modules/backend/index.js +1 -0
  110. package/dist/modules/backend/index.js.map +1 -1
  111. package/dist/modules/backend/optional-read.d.ts +4 -0
  112. package/dist/modules/backend/optional-read.d.ts.map +1 -0
  113. package/dist/modules/backend/optional-read.js +7 -0
  114. package/dist/modules/backend/optional-read.js.map +1 -0
  115. package/dist/modules/company_backend/index.d.ts.map +1 -1
  116. package/dist/modules/company_backend/index.js +0 -2
  117. package/dist/modules/company_backend/index.js.map +1 -1
  118. package/dist/modules/company_backend/screens/branch-form.d.ts.map +1 -1
  119. package/dist/modules/company_backend/screens/branch-form.js +3 -1
  120. package/dist/modules/company_backend/screens/branch-form.js.map +1 -1
  121. package/dist/modules/company_backend/screens/companies-list.d.ts.map +1 -1
  122. package/dist/modules/company_backend/screens/companies-list.js +1 -1
  123. package/dist/modules/company_backend/screens/companies-list.js.map +1 -1
  124. package/dist/modules/company_backend/screens/company-form.d.ts.map +1 -1
  125. package/dist/modules/company_backend/screens/company-form.js +1 -3
  126. package/dist/modules/company_backend/screens/company-form.js.map +1 -1
  127. package/dist/modules/company_backend/screens/context.d.ts.map +1 -1
  128. package/dist/modules/company_backend/screens/context.js +1 -1
  129. package/dist/modules/company_backend/screens/context.js.map +1 -1
  130. package/dist/modules/company_backend/screens/hierarchy.d.ts.map +1 -1
  131. package/dist/modules/company_backend/screens/hierarchy.js +1 -1
  132. package/dist/modules/company_backend/screens/hierarchy.js.map +1 -1
  133. package/dist/modules/crm_backend/client/crm-case-modal.d.mts +8 -8
  134. package/dist/modules/crm_backend/client/crm-case-modal.d.mts.map +1 -1
  135. package/dist/modules/crm_backend/client/crm-case-modal.mjs +1 -1
  136. package/dist/modules/crm_backend/client/crm-case-modal.mjs.map +3 -3
  137. package/dist/modules/crm_backend/client/crm-configuration-modal.d.mts +55 -55
  138. package/dist/modules/crm_backend/client/crm-configuration-modal.d.mts.map +1 -1
  139. package/dist/modules/crm_backend/client/crm-configuration-modal.mjs +1 -1
  140. package/dist/modules/crm_backend/client/crm-configuration-modal.mjs.map +3 -3
  141. package/dist/modules/crm_backend/messages.d.ts +0 -10
  142. package/dist/modules/crm_backend/messages.d.ts.map +1 -1
  143. package/dist/modules/crm_backend/messages.js +0 -10
  144. package/dist/modules/crm_backend/messages.js.map +1 -1
  145. package/dist/modules/crm_backend/screens/activity-planner.d.ts.map +1 -1
  146. package/dist/modules/crm_backend/screens/activity-planner.js +1 -1
  147. package/dist/modules/crm_backend/screens/activity-planner.js.map +1 -1
  148. package/dist/modules/crm_backend/screens/case-create.d.ts.map +1 -1
  149. package/dist/modules/crm_backend/screens/case-create.js +1 -1
  150. package/dist/modules/crm_backend/screens/case-create.js.map +1 -1
  151. package/dist/modules/crm_backend/screens/case-detail.d.ts.map +1 -1
  152. package/dist/modules/crm_backend/screens/case-detail.js +2 -2
  153. package/dist/modules/crm_backend/screens/case-detail.js.map +1 -1
  154. package/dist/modules/crm_backend/screens/cases-list.d.ts.map +1 -1
  155. package/dist/modules/crm_backend/screens/cases-list.js +1 -1
  156. package/dist/modules/crm_backend/screens/cases-list.js.map +1 -1
  157. package/dist/modules/crm_backend/screens/configuration.d.ts.map +1 -1
  158. package/dist/modules/crm_backend/screens/configuration.js +1 -1
  159. package/dist/modules/crm_backend/screens/configuration.js.map +1 -1
  160. package/dist/modules/crm_backend/screens/leaderboard.d.ts.map +1 -1
  161. package/dist/modules/crm_backend/screens/leaderboard.js +1 -1
  162. package/dist/modules/crm_backend/screens/leaderboard.js.map +1 -1
  163. package/dist/modules/crm_backend/screens/pipeline.d.ts.map +1 -1
  164. package/dist/modules/crm_backend/screens/pipeline.js +1 -1
  165. package/dist/modules/crm_backend/screens/pipeline.js.map +1 -1
  166. package/dist/modules/flow/domain/command-check.d.ts +3 -0
  167. package/dist/modules/flow/domain/command-check.d.ts.map +1 -0
  168. package/dist/modules/flow/domain/command-check.js +9 -0
  169. package/dist/modules/flow/domain/command-check.js.map +1 -0
  170. package/dist/modules/flow/domain/command.d.ts +33 -0
  171. package/dist/modules/flow/domain/command.d.ts.map +1 -0
  172. package/dist/modules/flow/domain/command.js +35 -0
  173. package/dist/modules/flow/domain/command.js.map +1 -0
  174. package/dist/modules/flow/domain/issue-bulk.d.ts +50 -0
  175. package/dist/modules/flow/domain/issue-bulk.d.ts.map +1 -0
  176. package/dist/modules/flow/domain/issue-bulk.js +97 -0
  177. package/dist/modules/flow/domain/issue-bulk.js.map +1 -0
  178. package/dist/modules/flow/domain/issue-dependency.d.ts +19 -0
  179. package/dist/modules/flow/domain/issue-dependency.d.ts.map +1 -0
  180. package/dist/modules/flow/domain/issue-dependency.js +59 -0
  181. package/dist/modules/flow/domain/issue-dependency.js.map +1 -0
  182. package/dist/modules/flow/domain/issue-discussion.d.ts +52 -0
  183. package/dist/modules/flow/domain/issue-discussion.d.ts.map +1 -0
  184. package/dist/modules/flow/domain/issue-discussion.js +114 -0
  185. package/dist/modules/flow/domain/issue-discussion.js.map +1 -0
  186. package/dist/modules/flow/domain/issue-transfer.d.ts +62 -0
  187. package/dist/modules/flow/domain/issue-transfer.d.ts.map +1 -0
  188. package/dist/modules/flow/domain/issue-transfer.js +171 -0
  189. package/dist/modules/flow/domain/issue-transfer.js.map +1 -0
  190. package/dist/modules/flow/domain/issue-validation.d.ts +68 -0
  191. package/dist/modules/flow/domain/issue-validation.d.ts.map +1 -0
  192. package/dist/modules/flow/domain/issue-validation.js +136 -0
  193. package/dist/modules/flow/domain/issue-validation.js.map +1 -0
  194. package/dist/modules/flow/domain/issue-write.d.ts +118 -0
  195. package/dist/modules/flow/domain/issue-write.d.ts.map +1 -0
  196. package/dist/modules/flow/domain/issue-write.js +372 -0
  197. package/dist/modules/flow/domain/issue-write.js.map +1 -0
  198. package/dist/modules/flow/domain/sprint-lifecycle.d.ts +61 -0
  199. package/dist/modules/flow/domain/sprint-lifecycle.d.ts.map +1 -0
  200. package/dist/modules/flow/domain/sprint-lifecycle.js +145 -0
  201. package/dist/modules/flow/domain/sprint-lifecycle.js.map +1 -0
  202. package/dist/modules/flow/functions/board.d.ts +7 -0
  203. package/dist/modules/flow/functions/board.d.ts.map +1 -0
  204. package/dist/modules/flow/functions/board.js +59 -0
  205. package/dist/modules/flow/functions/board.js.map +1 -0
  206. package/dist/modules/flow/functions/column.d.ts +8 -0
  207. package/dist/modules/flow/functions/column.d.ts.map +1 -0
  208. package/dist/modules/flow/functions/column.js +64 -0
  209. package/dist/modules/flow/functions/column.js.map +1 -0
  210. package/dist/modules/flow/functions/effects.d.ts +21 -0
  211. package/dist/modules/flow/functions/effects.d.ts.map +1 -0
  212. package/dist/modules/flow/functions/effects.js +96 -0
  213. package/dist/modules/flow/functions/effects.js.map +1 -0
  214. package/dist/modules/flow/functions/entity-save.d.ts +4 -0
  215. package/dist/modules/flow/functions/entity-save.d.ts.map +1 -0
  216. package/dist/modules/flow/functions/entity-save.js +60 -0
  217. package/dist/modules/flow/functions/entity-save.js.map +1 -0
  218. package/dist/modules/flow/functions/epic.d.ts +26 -0
  219. package/dist/modules/flow/functions/epic.d.ts.map +1 -0
  220. package/dist/modules/flow/functions/epic.js +151 -0
  221. package/dist/modules/flow/functions/epic.js.map +1 -0
  222. package/dist/modules/flow/functions/field.d.ts +9 -0
  223. package/dist/modules/flow/functions/field.d.ts.map +1 -0
  224. package/dist/modules/flow/functions/field.js +117 -0
  225. package/dist/modules/flow/functions/field.js.map +1 -0
  226. package/dist/modules/flow/functions/index.d.ts +5 -0
  227. package/dist/modules/flow/functions/index.d.ts.map +1 -0
  228. package/dist/modules/flow/functions/index.js +42 -0
  229. package/dist/modules/flow/functions/index.js.map +1 -0
  230. package/dist/modules/flow/functions/issue-batch.d.ts +6 -0
  231. package/dist/modules/flow/functions/issue-batch.d.ts.map +1 -0
  232. package/dist/modules/flow/functions/issue-batch.js +149 -0
  233. package/dist/modules/flow/functions/issue-batch.js.map +1 -0
  234. package/dist/modules/flow/functions/issue-dependency.d.ts +8 -0
  235. package/dist/modules/flow/functions/issue-dependency.d.ts.map +1 -0
  236. package/dist/modules/flow/functions/issue-dependency.js +54 -0
  237. package/dist/modules/flow/functions/issue-dependency.js.map +1 -0
  238. package/dist/modules/flow/functions/issue-discussion.d.ts +6 -0
  239. package/dist/modules/flow/functions/issue-discussion.d.ts.map +1 -0
  240. package/dist/modules/flow/functions/issue-discussion.js +86 -0
  241. package/dist/modules/flow/functions/issue-discussion.js.map +1 -0
  242. package/dist/modules/flow/functions/issue-read.d.ts +18 -0
  243. package/dist/modules/flow/functions/issue-read.d.ts.map +1 -0
  244. package/dist/modules/flow/functions/issue-read.js +159 -0
  245. package/dist/modules/flow/functions/issue-read.js.map +1 -0
  246. package/dist/modules/flow/functions/issue-write.d.ts +9 -0
  247. package/dist/modules/flow/functions/issue-write.d.ts.map +1 -0
  248. package/dist/modules/flow/functions/issue-write.js +149 -0
  249. package/dist/modules/flow/functions/issue-write.js.map +1 -0
  250. package/dist/modules/flow/functions/issueType.d.ts +8 -0
  251. package/dist/modules/flow/functions/issueType.d.ts.map +1 -0
  252. package/dist/modules/flow/functions/issueType.js +66 -0
  253. package/dist/modules/flow/functions/issueType.js.map +1 -0
  254. package/dist/modules/flow/functions/page.d.ts +22 -0
  255. package/dist/modules/flow/functions/page.d.ts.map +1 -0
  256. package/dist/modules/flow/functions/page.js +202 -0
  257. package/dist/modules/flow/functions/page.js.map +1 -0
  258. package/dist/modules/flow/functions/project.d.ts +26 -0
  259. package/dist/modules/flow/functions/project.d.ts.map +1 -0
  260. package/dist/modules/flow/functions/project.js +381 -0
  261. package/dist/modules/flow/functions/project.js.map +1 -0
  262. package/dist/modules/flow/functions/sprint.d.ts +17 -0
  263. package/dist/modules/flow/functions/sprint.d.ts.map +1 -0
  264. package/dist/modules/flow/functions/sprint.js +173 -0
  265. package/dist/modules/flow/functions/sprint.js.map +1 -0
  266. package/dist/modules/flow/functions/tag.d.ts +14 -0
  267. package/dist/modules/flow/functions/tag.d.ts.map +1 -0
  268. package/dist/modules/flow/functions/tag.js +88 -0
  269. package/dist/modules/flow/functions/tag.js.map +1 -0
  270. package/dist/modules/flow/index.d.ts +8 -2
  271. package/dist/modules/flow/index.d.ts.map +1 -1
  272. package/dist/modules/flow/index.js +7 -2
  273. package/dist/modules/flow/index.js.map +1 -1
  274. package/dist/modules/flow/pages.d.ts +1 -1
  275. package/dist/modules/flow/pages.d.ts.map +1 -1
  276. package/dist/modules/flow/pages.js +1 -1
  277. package/dist/modules/flow/pages.js.map +1 -1
  278. package/dist/modules/flow/queries/calendar.d.ts +21 -0
  279. package/dist/modules/flow/queries/calendar.d.ts.map +1 -0
  280. package/dist/modules/flow/queries/calendar.js +31 -0
  281. package/dist/modules/flow/queries/calendar.js.map +1 -0
  282. package/dist/modules/flow/queries/issue-dependencies.d.ts +17 -0
  283. package/dist/modules/flow/queries/issue-dependencies.d.ts.map +1 -0
  284. package/dist/modules/flow/queries/issue-dependencies.js +46 -0
  285. package/dist/modules/flow/queries/issue-dependencies.js.map +1 -0
  286. package/dist/modules/flow/queries/issue-followers.d.ts +6 -0
  287. package/dist/modules/flow/queries/issue-followers.d.ts.map +1 -0
  288. package/dist/modules/flow/queries/issue-followers.js +18 -0
  289. package/dist/modules/flow/queries/issue-followers.js.map +1 -0
  290. package/dist/modules/flow/queries/issue-list.d.ts +153 -0
  291. package/dist/modules/flow/queries/issue-list.d.ts.map +1 -0
  292. package/dist/modules/flow/queries/issue-list.js +439 -0
  293. package/dist/modules/flow/queries/issue-list.js.map +1 -0
  294. package/dist/modules/flow/queries/options.d.ts +4 -0
  295. package/dist/modules/flow/queries/options.d.ts.map +1 -0
  296. package/dist/modules/flow/queries/options.js +13 -0
  297. package/dist/modules/flow/queries/options.js.map +1 -0
  298. package/dist/modules/flow/queries/progress.d.ts +24 -0
  299. package/dist/modules/flow/queries/progress.d.ts.map +1 -0
  300. package/dist/modules/flow/queries/progress.js +54 -0
  301. package/dist/modules/flow/queries/progress.js.map +1 -0
  302. package/dist/modules/flow/queries/project-list.d.ts +4 -0
  303. package/dist/modules/flow/queries/project-list.d.ts.map +1 -0
  304. package/dist/modules/flow/queries/project-list.js +19 -0
  305. package/dist/modules/flow/queries/project-list.js.map +1 -0
  306. package/dist/modules/flow_backend/messages.d.ts +1 -2
  307. package/dist/modules/flow_backend/messages.d.ts.map +1 -1
  308. package/dist/modules/flow_backend/messages.js +0 -2
  309. package/dist/modules/flow_backend/messages.js.map +1 -1
  310. package/dist/modules/flow_backend/routes.js +1 -1
  311. package/dist/modules/flow_backend/routes.js.map +1 -1
  312. package/dist/modules/flow_backend/screens/all-epics.d.ts.map +1 -1
  313. package/dist/modules/flow_backend/screens/all-epics.js +1 -1
  314. package/dist/modules/flow_backend/screens/all-epics.js.map +1 -1
  315. package/dist/modules/flow_backend/screens/all-pages.d.ts.map +1 -1
  316. package/dist/modules/flow_backend/screens/all-pages.js +1 -1
  317. package/dist/modules/flow_backend/screens/all-pages.js.map +1 -1
  318. package/dist/modules/flow_backend/screens/epic-detail.js +1 -1
  319. package/dist/modules/flow_backend/screens/epic-detail.js.map +1 -1
  320. package/dist/modules/flow_backend/screens/gantt.d.ts.map +1 -1
  321. package/dist/modules/flow_backend/screens/gantt.js +1 -1
  322. package/dist/modules/flow_backend/screens/gantt.js.map +1 -1
  323. package/dist/modules/flow_backend/screens/issue-detail.js +2 -1
  324. package/dist/modules/flow_backend/screens/issue-detail.js.map +1 -1
  325. package/dist/modules/flow_backend/screens/issues.d.ts.map +1 -1
  326. package/dist/modules/flow_backend/screens/issues.js +1 -1
  327. package/dist/modules/flow_backend/screens/issues.js.map +1 -1
  328. package/dist/modules/flow_backend/screens/map.js +1 -1
  329. package/dist/modules/flow_backend/screens/map.js.map +1 -1
  330. package/dist/modules/flow_backend/screens/my-work.d.ts.map +1 -1
  331. package/dist/modules/flow_backend/screens/my-work.js +1 -1
  332. package/dist/modules/flow_backend/screens/my-work.js.map +1 -1
  333. package/dist/modules/flow_backend/screens/page-detail.js +1 -1
  334. package/dist/modules/flow_backend/screens/page-detail.js.map +1 -1
  335. package/dist/modules/flow_backend/screens/project-create.d.ts.map +1 -1
  336. package/dist/modules/flow_backend/screens/project-create.js +1 -1
  337. package/dist/modules/flow_backend/screens/project-create.js.map +1 -1
  338. package/dist/modules/flow_backend/screens/project-pages.d.ts.map +1 -1
  339. package/dist/modules/flow_backend/screens/project-pages.js +1 -1
  340. package/dist/modules/flow_backend/screens/project-pages.js.map +1 -1
  341. package/dist/modules/flow_backend/screens/projects-list.d.ts.map +1 -1
  342. package/dist/modules/flow_backend/screens/projects-list.js +1 -1
  343. package/dist/modules/flow_backend/screens/projects-list.js.map +1 -1
  344. package/dist/modules/flow_backend/screens/sprints.d.ts.map +1 -1
  345. package/dist/modules/flow_backend/screens/sprints.js +1 -1
  346. package/dist/modules/flow_backend/screens/sprints.js.map +1 -1
  347. package/dist/modules/flow_staff_channel/channel-routes.js +1 -1
  348. package/dist/modules/flow_staff_channel/channel-routes.js.map +1 -1
  349. package/dist/modules/hospitality_billing/messages.d.ts.map +1 -1
  350. package/dist/modules/hospitality_billing/messages.js +0 -2
  351. package/dist/modules/hospitality_billing/messages.js.map +1 -1
  352. package/dist/modules/hospitality_billing/screens/billing.d.ts.map +1 -1
  353. package/dist/modules/hospitality_billing/screens/billing.js +1 -1
  354. package/dist/modules/hospitality_billing/screens/billing.js.map +1 -1
  355. package/dist/modules/hospitality_billing/screens/page-frame.d.ts +1 -2
  356. package/dist/modules/hospitality_billing/screens/page-frame.d.ts.map +1 -1
  357. package/dist/modules/hospitality_billing/screens/page-frame.js +1 -1
  358. package/dist/modules/hospitality_billing/screens/page-frame.js.map +1 -1
  359. package/dist/modules/hospitality_core/messages.js +2 -2
  360. package/dist/modules/hospitality_core/messages.js.map +1 -1
  361. package/dist/modules/hospitality_core/screens/check-out-prep.d.ts.map +1 -1
  362. package/dist/modules/hospitality_core/screens/check-out-prep.js +1 -1
  363. package/dist/modules/hospitality_core/screens/check-out-prep.js.map +1 -1
  364. package/dist/modules/hospitality_core/screens/front-desk.d.ts.map +1 -1
  365. package/dist/modules/hospitality_core/screens/front-desk.js +40 -40
  366. package/dist/modules/hospitality_core/screens/front-desk.js.map +1 -1
  367. package/dist/modules/hospitality_core/screens/page-frame.d.ts +2 -3
  368. package/dist/modules/hospitality_core/screens/page-frame.d.ts.map +1 -1
  369. package/dist/modules/hospitality_core/screens/page-frame.js +3 -3
  370. package/dist/modules/hospitality_core/screens/page-frame.js.map +1 -1
  371. package/dist/modules/hospitality_core/screens/tape-chart.d.ts.map +1 -1
  372. package/dist/modules/hospitality_core/screens/tape-chart.js +3 -12
  373. package/dist/modules/hospitality_core/screens/tape-chart.js.map +1 -1
  374. package/dist/modules/hr_backend/screens/employee-form.d.ts.map +1 -1
  375. package/dist/modules/hr_backend/screens/employee-form.js +1 -1
  376. package/dist/modules/hr_backend/screens/employee-form.js.map +1 -1
  377. package/dist/modules/hr_backend/screens/leaves-list.d.ts.map +1 -1
  378. package/dist/modules/hr_backend/screens/leaves-list.js +1 -1
  379. package/dist/modules/hr_backend/screens/leaves-list.js.map +1 -1
  380. package/dist/modules/livedoc/islands.d.ts +9 -0
  381. package/dist/modules/livedoc/islands.d.ts.map +1 -1
  382. package/dist/modules/loyalty_backend/messages.d.ts +0 -10
  383. package/dist/modules/loyalty_backend/messages.d.ts.map +1 -1
  384. package/dist/modules/loyalty_backend/messages.js +0 -10
  385. package/dist/modules/loyalty_backend/messages.js.map +1 -1
  386. package/dist/modules/loyalty_backend/screens/index.d.ts.map +1 -1
  387. package/dist/modules/loyalty_backend/screens/index.js +5 -5
  388. package/dist/modules/loyalty_backend/screens/index.js.map +1 -1
  389. package/dist/modules/loyalty_backend/screens/page-frame.d.ts +2 -3
  390. package/dist/modules/loyalty_backend/screens/page-frame.d.ts.map +1 -1
  391. package/dist/modules/loyalty_backend/screens/page-frame.js +2 -2
  392. package/dist/modules/loyalty_backend/screens/page-frame.js.map +1 -1
  393. package/dist/modules/mail_backend/index.d.ts.map +1 -1
  394. package/dist/modules/mail_backend/index.js +0 -2
  395. package/dist/modules/mail_backend/index.js.map +1 -1
  396. package/dist/modules/mail_backend/screens/inbox-list.d.ts.map +1 -1
  397. package/dist/modules/mail_backend/screens/inbox-list.js +1 -1
  398. package/dist/modules/mail_backend/screens/inbox-list.js.map +1 -1
  399. package/dist/modules/mail_inbound_backend/index.d.ts.map +1 -1
  400. package/dist/modules/mail_inbound_backend/index.js +0 -2
  401. package/dist/modules/mail_inbound_backend/index.js.map +1 -1
  402. package/dist/modules/mail_inbound_backend/screens/inbound-list.d.ts.map +1 -1
  403. package/dist/modules/mail_inbound_backend/screens/inbound-list.js +1 -1
  404. package/dist/modules/mail_inbound_backend/screens/inbound-list.js.map +1 -1
  405. package/dist/modules/mail_transport_backend/index.d.ts.map +1 -1
  406. package/dist/modules/mail_transport_backend/index.js +0 -2
  407. package/dist/modules/mail_transport_backend/index.js.map +1 -1
  408. package/dist/modules/mail_transport_backend/screens/outbox-list.d.ts.map +1 -1
  409. package/dist/modules/mail_transport_backend/screens/outbox-list.js +1 -1
  410. package/dist/modules/mail_transport_backend/screens/outbox-list.js.map +1 -1
  411. package/dist/modules/manufacturing_backend/screens/order-execution.d.ts.map +1 -1
  412. package/dist/modules/manufacturing_backend/screens/order-execution.js +1 -1
  413. package/dist/modules/manufacturing_backend/screens/order-execution.js.map +1 -1
  414. package/dist/modules/oauth_backend/messages.d.ts +0 -4
  415. package/dist/modules/oauth_backend/messages.d.ts.map +1 -1
  416. package/dist/modules/oauth_backend/messages.js +0 -4
  417. package/dist/modules/oauth_backend/messages.js.map +1 -1
  418. package/dist/modules/oauth_backend/screens/index.d.ts.map +1 -1
  419. package/dist/modules/oauth_backend/screens/index.js +5 -5
  420. package/dist/modules/oauth_backend/screens/index.js.map +1 -1
  421. package/dist/modules/partner_backend/screens/form.d.ts.map +1 -1
  422. package/dist/modules/partner_backend/screens/form.js +3 -1
  423. package/dist/modules/partner_backend/screens/form.js.map +1 -1
  424. package/dist/modules/partner_backend/screens/list.d.ts.map +1 -1
  425. package/dist/modules/partner_backend/screens/list.js +1 -1
  426. package/dist/modules/partner_backend/screens/list.js.map +1 -1
  427. package/dist/modules/partner_backend/screens/new.d.ts.map +1 -1
  428. package/dist/modules/partner_backend/screens/new.js +1 -1
  429. package/dist/modules/partner_backend/screens/new.js.map +1 -1
  430. package/dist/modules/pricing_backend/index.js +0 -2
  431. package/dist/modules/pricing_backend/index.js.map +1 -1
  432. package/dist/modules/pricing_backend/screens/pricelist-detail.d.ts.map +1 -1
  433. package/dist/modules/pricing_backend/screens/pricelist-detail.js +1 -1
  434. package/dist/modules/pricing_backend/screens/pricelist-detail.js.map +1 -1
  435. package/dist/modules/pricing_backend/screens/pricelists-list.d.ts.map +1 -1
  436. package/dist/modules/pricing_backend/screens/pricelists-list.js +1 -1
  437. package/dist/modules/pricing_backend/screens/pricelists-list.js.map +1 -1
  438. package/dist/modules/product_backend/client/attribute-modal.d.mts +5 -5
  439. package/dist/modules/product_backend/client/attribute-modal.d.mts.map +1 -1
  440. package/dist/modules/product_backend/client/attribute-modal.mjs +1 -1
  441. package/dist/modules/product_backend/client/attribute-modal.mjs.map +3 -3
  442. package/dist/modules/product_backend/client/product-modal.d.mts +8 -8
  443. package/dist/modules/product_backend/client/product-modal.d.mts.map +1 -1
  444. package/dist/modules/product_backend/client/product-modal.mjs +1 -1
  445. package/dist/modules/product_backend/client/product-modal.mjs.map +3 -3
  446. package/dist/modules/product_backend/client/variant-editor.d.mts +3 -3
  447. package/dist/modules/product_backend/client/variant-editor.d.mts.map +1 -1
  448. package/dist/modules/product_backend/client/variant-editor.mjs +1 -1
  449. package/dist/modules/product_backend/client/variant-editor.mjs.map +3 -3
  450. package/dist/modules/product_backend/screens/detail.d.ts.map +1 -1
  451. package/dist/modules/product_backend/screens/detail.js +3 -2
  452. package/dist/modules/product_backend/screens/detail.js.map +1 -1
  453. package/dist/modules/product_backend/screens/variant.d.ts.map +1 -1
  454. package/dist/modules/product_backend/screens/variant.js +3 -2
  455. package/dist/modules/product_backend/screens/variant.js.map +1 -1
  456. package/dist/modules/purchase_backend/client/purchase-order-modal.d.mts +185 -0
  457. package/dist/modules/purchase_backend/client/purchase-order-modal.d.mts.map +1 -0
  458. package/dist/modules/purchase_backend/client/purchase-order-modal.mjs +2 -0
  459. package/dist/modules/purchase_backend/client/purchase-order-modal.mjs.map +7 -0
  460. package/dist/modules/purchase_backend/client/vendor-pricelist-modal.d.mts +52 -0
  461. package/dist/modules/purchase_backend/client/vendor-pricelist-modal.d.mts.map +1 -0
  462. package/dist/modules/purchase_backend/client/vendor-pricelist-modal.mjs +2 -0
  463. package/dist/modules/purchase_backend/client/vendor-pricelist-modal.mjs.map +7 -0
  464. package/dist/modules/purchase_backend/index.js +83 -14
  465. package/dist/modules/purchase_backend/index.js.map +1 -1
  466. package/dist/modules/purchase_backend/modal/context.d.ts +4 -0
  467. package/dist/modules/purchase_backend/modal/context.d.ts.map +1 -0
  468. package/dist/modules/purchase_backend/modal/context.js +94 -0
  469. package/dist/modules/purchase_backend/modal/context.js.map +1 -0
  470. package/dist/modules/purchase_backend/modal/order-modal-view.d.ts +18 -0
  471. package/dist/modules/purchase_backend/modal/order-modal-view.d.ts.map +1 -0
  472. package/dist/modules/purchase_backend/modal/order-modal-view.js +290 -0
  473. package/dist/modules/purchase_backend/modal/order-modal-view.js.map +1 -0
  474. package/dist/modules/purchase_backend/modal/pricelist-context.d.ts +3 -0
  475. package/dist/modules/purchase_backend/modal/pricelist-context.d.ts.map +1 -0
  476. package/dist/modules/purchase_backend/modal/pricelist-context.js +36 -0
  477. package/dist/modules/purchase_backend/modal/pricelist-context.js.map +1 -0
  478. package/dist/modules/purchase_backend/modal/pricelist-view.d.ts +12 -0
  479. package/dist/modules/purchase_backend/modal/pricelist-view.d.ts.map +1 -0
  480. package/dist/modules/purchase_backend/modal/pricelist-view.js +78 -0
  481. package/dist/modules/purchase_backend/modal/pricelist-view.js.map +1 -0
  482. package/dist/modules/purchase_backend/screens/order-detail.d.ts.map +1 -1
  483. package/dist/modules/purchase_backend/screens/order-detail.js +4 -2
  484. package/dist/modules/purchase_backend/screens/order-detail.js.map +1 -1
  485. package/dist/modules/purchase_backend/screens/overview.d.ts +5 -0
  486. package/dist/modules/purchase_backend/screens/overview.d.ts.map +1 -1
  487. package/dist/modules/purchase_backend/screens/overview.js +27 -6
  488. package/dist/modules/purchase_backend/screens/overview.js.map +1 -1
  489. package/dist/modules/purchase_backend/screens/rfq-create.d.ts.map +1 -1
  490. package/dist/modules/purchase_backend/screens/rfq-create.js +1 -1
  491. package/dist/modules/purchase_backend/screens/rfq-create.js.map +1 -1
  492. package/dist/modules/purchase_backend/screens/rfqs-list.d.ts +1 -1
  493. package/dist/modules/purchase_backend/screens/rfqs-list.d.ts.map +1 -1
  494. package/dist/modules/purchase_backend/screens/rfqs-list.js +1 -1
  495. package/dist/modules/purchase_backend/screens/rfqs-list.js.map +1 -1
  496. package/dist/modules/purchase_backend/screens/vendor-pricelist-create.d.ts.map +1 -1
  497. package/dist/modules/purchase_backend/screens/vendor-pricelist-create.js +1 -1
  498. package/dist/modules/purchase_backend/screens/vendor-pricelist-create.js.map +1 -1
  499. package/dist/modules/purchase_backend/screens/vendor-pricelists-list.d.ts +2 -1
  500. package/dist/modules/purchase_backend/screens/vendor-pricelists-list.d.ts.map +1 -1
  501. package/dist/modules/purchase_backend/screens/vendor-pricelists-list.js +2 -2
  502. package/dist/modules/purchase_backend/screens/vendor-pricelists-list.js.map +1 -1
  503. package/dist/modules/purchase_backend/search.d.ts +1 -1
  504. package/dist/modules/sale/functions/line-edit.d.ts +4 -0
  505. package/dist/modules/sale/functions/line-edit.d.ts.map +1 -0
  506. package/dist/modules/sale/functions/line-edit.js +120 -0
  507. package/dist/modules/sale/functions/line-edit.js.map +1 -0
  508. package/dist/modules/sale/index.d.ts.map +1 -1
  509. package/dist/modules/sale/index.js +16 -1
  510. package/dist/modules/sale/index.js.map +1 -1
  511. package/dist/modules/sale_backend/client/invoicing-policy-modal.d.mts +53 -0
  512. package/dist/modules/sale_backend/client/invoicing-policy-modal.d.mts.map +1 -0
  513. package/dist/modules/sale_backend/client/invoicing-policy-modal.mjs +2 -0
  514. package/dist/modules/sale_backend/client/invoicing-policy-modal.mjs.map +7 -0
  515. package/dist/modules/sale_backend/client/sale-order-modal.d.mts +161 -0
  516. package/dist/modules/sale_backend/client/sale-order-modal.d.mts.map +1 -0
  517. package/dist/modules/sale_backend/client/sale-order-modal.mjs +2 -0
  518. package/dist/modules/sale_backend/client/sale-order-modal.mjs.map +7 -0
  519. package/dist/modules/sale_backend/index.js +81 -20
  520. package/dist/modules/sale_backend/index.js.map +1 -1
  521. package/dist/modules/sale_backend/modal/context.d.ts +4 -0
  522. package/dist/modules/sale_backend/modal/context.d.ts.map +1 -0
  523. package/dist/modules/sale_backend/modal/context.js +94 -0
  524. package/dist/modules/sale_backend/modal/context.js.map +1 -0
  525. package/dist/modules/sale_backend/modal/order-modal-view.d.ts +18 -0
  526. package/dist/modules/sale_backend/modal/order-modal-view.d.ts.map +1 -0
  527. package/dist/modules/sale_backend/modal/order-modal-view.js +289 -0
  528. package/dist/modules/sale_backend/modal/order-modal-view.js.map +1 -0
  529. package/dist/modules/sale_backend/modal/policy-context.d.ts +3 -0
  530. package/dist/modules/sale_backend/modal/policy-context.d.ts.map +1 -0
  531. package/dist/modules/sale_backend/modal/policy-context.js +26 -0
  532. package/dist/modules/sale_backend/modal/policy-context.js.map +1 -0
  533. package/dist/modules/sale_backend/modal/policy-view.d.ts +11 -0
  534. package/dist/modules/sale_backend/modal/policy-view.d.ts.map +1 -0
  535. package/dist/modules/sale_backend/modal/policy-view.js +70 -0
  536. package/dist/modules/sale_backend/modal/policy-view.js.map +1 -0
  537. package/dist/modules/sale_backend/screens/invoicing-policies-list.d.ts +1 -1
  538. package/dist/modules/sale_backend/screens/invoicing-policies-list.d.ts.map +1 -1
  539. package/dist/modules/sale_backend/screens/invoicing-policies-list.js +1 -1
  540. package/dist/modules/sale_backend/screens/invoicing-policies-list.js.map +1 -1
  541. package/dist/modules/sale_backend/screens/invoicing-policy-create.d.ts.map +1 -1
  542. package/dist/modules/sale_backend/screens/invoicing-policy-create.js +1 -1
  543. package/dist/modules/sale_backend/screens/invoicing-policy-create.js.map +1 -1
  544. package/dist/modules/sale_backend/screens/order-detail.d.ts.map +1 -1
  545. package/dist/modules/sale_backend/screens/order-detail.js +3 -1
  546. package/dist/modules/sale_backend/screens/order-detail.js.map +1 -1
  547. package/dist/modules/sale_backend/screens/overview.d.ts +3 -0
  548. package/dist/modules/sale_backend/screens/overview.d.ts.map +1 -1
  549. package/dist/modules/sale_backend/screens/overview.js +22 -14
  550. package/dist/modules/sale_backend/screens/overview.js.map +1 -1
  551. package/dist/modules/sale_backend/screens/quotation-create.d.ts.map +1 -1
  552. package/dist/modules/sale_backend/screens/quotation-create.js +1 -1
  553. package/dist/modules/sale_backend/screens/quotation-create.js.map +1 -1
  554. package/dist/modules/sale_backend/screens/quotations-list.d.ts +1 -1
  555. package/dist/modules/sale_backend/screens/quotations-list.d.ts.map +1 -1
  556. package/dist/modules/sale_backend/screens/quotations-list.js +1 -1
  557. package/dist/modules/sale_backend/screens/quotations-list.js.map +1 -1
  558. package/dist/modules/sale_backend/screens/sales-orders-list.d.ts.map +1 -1
  559. package/dist/modules/sale_backend/screens/sales-orders-list.js +1 -1
  560. package/dist/modules/sale_backend/screens/sales-orders-list.js.map +1 -1
  561. package/dist/modules/stock/functions/inventory-preview.d.ts +4 -0
  562. package/dist/modules/stock/functions/inventory-preview.d.ts.map +1 -0
  563. package/dist/modules/stock/functions/inventory-preview.js +68 -0
  564. package/dist/modules/stock/functions/inventory-preview.js.map +1 -0
  565. package/dist/modules/stock/index.d.ts.map +1 -1
  566. package/dist/modules/stock/index.js +14 -1
  567. package/dist/modules/stock/index.js.map +1 -1
  568. package/dist/modules/stock_backend/client/inventory-count-modal.d.mts +60 -0
  569. package/dist/modules/stock_backend/client/inventory-count-modal.d.mts.map +1 -0
  570. package/dist/modules/stock_backend/client/inventory-count-modal.mjs +2 -0
  571. package/dist/modules/stock_backend/client/inventory-count-modal.mjs.map +7 -0
  572. package/dist/modules/stock_backend/client/stock-configuration-modal.d.mts +105 -0
  573. package/dist/modules/stock_backend/client/stock-configuration-modal.d.mts.map +1 -0
  574. package/dist/modules/stock_backend/client/stock-configuration-modal.mjs +2 -0
  575. package/dist/modules/stock_backend/client/stock-configuration-modal.mjs.map +7 -0
  576. package/dist/modules/stock_backend/client/stock-transfer-modal.d.mts +130 -0
  577. package/dist/modules/stock_backend/client/stock-transfer-modal.d.mts.map +1 -0
  578. package/dist/modules/stock_backend/client/stock-transfer-modal.mjs +2 -0
  579. package/dist/modules/stock_backend/client/stock-transfer-modal.mjs.map +7 -0
  580. package/dist/modules/stock_backend/functions/index.d.ts +10 -0
  581. package/dist/modules/stock_backend/functions/index.d.ts.map +1 -0
  582. package/dist/modules/stock_backend/functions/index.js +20 -0
  583. package/dist/modules/stock_backend/functions/index.js.map +1 -0
  584. package/dist/modules/stock_backend/functions.d.ts +1 -9
  585. package/dist/modules/stock_backend/functions.d.ts.map +1 -1
  586. package/dist/modules/stock_backend/functions.js +1 -18
  587. package/dist/modules/stock_backend/functions.js.map +1 -1
  588. package/dist/modules/stock_backend/index.js +52 -0
  589. package/dist/modules/stock_backend/index.js.map +1 -1
  590. package/dist/modules/stock_backend/islands.d.ts +8 -0
  591. package/dist/modules/stock_backend/islands.d.ts.map +1 -1
  592. package/dist/modules/stock_backend/islands.js +41 -0
  593. package/dist/modules/stock_backend/islands.js.map +1 -1
  594. package/dist/modules/stock_backend/modal/configuration-context.d.ts +3 -0
  595. package/dist/modules/stock_backend/modal/configuration-context.d.ts.map +1 -0
  596. package/dist/modules/stock_backend/modal/configuration-context.js +65 -0
  597. package/dist/modules/stock_backend/modal/configuration-context.js.map +1 -0
  598. package/dist/modules/stock_backend/modal/configuration-view.d.ts +21 -0
  599. package/dist/modules/stock_backend/modal/configuration-view.d.ts.map +1 -0
  600. package/dist/modules/stock_backend/modal/configuration-view.js +201 -0
  601. package/dist/modules/stock_backend/modal/configuration-view.js.map +1 -0
  602. package/dist/modules/stock_backend/modal/configuration.d.ts +20 -0
  603. package/dist/modules/stock_backend/modal/configuration.d.ts.map +1 -0
  604. package/dist/modules/stock_backend/modal/configuration.js +117 -0
  605. package/dist/modules/stock_backend/modal/configuration.js.map +1 -0
  606. package/dist/modules/stock_backend/modal/inventory-context.d.ts +3 -0
  607. package/dist/modules/stock_backend/modal/inventory-context.d.ts.map +1 -0
  608. package/dist/modules/stock_backend/modal/inventory-context.js +37 -0
  609. package/dist/modules/stock_backend/modal/inventory-context.js.map +1 -0
  610. package/dist/modules/stock_backend/modal/inventory-view.d.ts +14 -0
  611. package/dist/modules/stock_backend/modal/inventory-view.d.ts.map +1 -0
  612. package/dist/modules/stock_backend/modal/inventory-view.js +142 -0
  613. package/dist/modules/stock_backend/modal/inventory-view.js.map +1 -0
  614. package/dist/modules/stock_backend/modal/transfer-context.d.ts +3 -0
  615. package/dist/modules/stock_backend/modal/transfer-context.d.ts.map +1 -0
  616. package/dist/modules/stock_backend/modal/transfer-context.js +54 -0
  617. package/dist/modules/stock_backend/modal/transfer-context.js.map +1 -0
  618. package/dist/modules/stock_backend/modal/transfer-view.d.ts +15 -0
  619. package/dist/modules/stock_backend/modal/transfer-view.d.ts.map +1 -0
  620. package/dist/modules/stock_backend/modal/transfer-view.js +252 -0
  621. package/dist/modules/stock_backend/modal/transfer-view.js.map +1 -0
  622. package/dist/modules/stock_backend/routes.d.ts.map +1 -1
  623. package/dist/modules/stock_backend/routes.js +117 -34
  624. package/dist/modules/stock_backend/routes.js.map +1 -1
  625. package/dist/modules/stock_backend/screens/forecast.d.ts.map +1 -1
  626. package/dist/modules/stock_backend/screens/forecast.js +5 -32
  627. package/dist/modules/stock_backend/screens/forecast.js.map +1 -1
  628. package/dist/modules/stock_backend/screens/inventory.d.ts +3 -1
  629. package/dist/modules/stock_backend/screens/inventory.d.ts.map +1 -1
  630. package/dist/modules/stock_backend/screens/inventory.js +27 -74
  631. package/dist/modules/stock_backend/screens/inventory.js.map +1 -1
  632. package/dist/modules/stock_backend/screens/location-create.d.ts.map +1 -1
  633. package/dist/modules/stock_backend/screens/location-create.js +1 -1
  634. package/dist/modules/stock_backend/screens/location-create.js.map +1 -1
  635. package/dist/modules/stock_backend/screens/locations-list.d.ts +1 -1
  636. package/dist/modules/stock_backend/screens/locations-list.d.ts.map +1 -1
  637. package/dist/modules/stock_backend/screens/locations-list.js +1 -1
  638. package/dist/modules/stock_backend/screens/locations-list.js.map +1 -1
  639. package/dist/modules/stock_backend/screens/lot-create.d.ts.map +1 -1
  640. package/dist/modules/stock_backend/screens/lot-create.js +1 -1
  641. package/dist/modules/stock_backend/screens/lot-create.js.map +1 -1
  642. package/dist/modules/stock_backend/screens/lot-detail.d.ts.map +1 -1
  643. package/dist/modules/stock_backend/screens/lot-detail.js +3 -2
  644. package/dist/modules/stock_backend/screens/lot-detail.js.map +1 -1
  645. package/dist/modules/stock_backend/screens/lots-list.d.ts +1 -1
  646. package/dist/modules/stock_backend/screens/lots-list.d.ts.map +1 -1
  647. package/dist/modules/stock_backend/screens/lots-list.js +1 -1
  648. package/dist/modules/stock_backend/screens/lots-list.js.map +1 -1
  649. package/dist/modules/stock_backend/screens/overview.d.ts +9 -0
  650. package/dist/modules/stock_backend/screens/overview.d.ts.map +1 -0
  651. package/dist/modules/stock_backend/screens/overview.js +38 -0
  652. package/dist/modules/stock_backend/screens/overview.js.map +1 -0
  653. package/dist/modules/stock_backend/screens/picking-type-create.d.ts.map +1 -1
  654. package/dist/modules/stock_backend/screens/picking-type-create.js +1 -1
  655. package/dist/modules/stock_backend/screens/picking-type-create.js.map +1 -1
  656. package/dist/modules/stock_backend/screens/picking-types-list.d.ts +1 -1
  657. package/dist/modules/stock_backend/screens/picking-types-list.d.ts.map +1 -1
  658. package/dist/modules/stock_backend/screens/picking-types-list.js +1 -1
  659. package/dist/modules/stock_backend/screens/picking-types-list.js.map +1 -1
  660. package/dist/modules/stock_backend/screens/replenishment-create.d.ts.map +1 -1
  661. package/dist/modules/stock_backend/screens/replenishment-create.js +1 -1
  662. package/dist/modules/stock_backend/screens/replenishment-create.js.map +1 -1
  663. package/dist/modules/stock_backend/screens/replenishment-list.d.ts +2 -2
  664. package/dist/modules/stock_backend/screens/replenishment-list.d.ts.map +1 -1
  665. package/dist/modules/stock_backend/screens/replenishment-list.js +2 -2
  666. package/dist/modules/stock_backend/screens/replenishment-list.js.map +1 -1
  667. package/dist/modules/stock_backend/screens/stock-route-create.d.ts.map +1 -1
  668. package/dist/modules/stock_backend/screens/stock-route-create.js +1 -1
  669. package/dist/modules/stock_backend/screens/stock-route-create.js.map +1 -1
  670. package/dist/modules/stock_backend/screens/stock-route-detail.js +2 -1
  671. package/dist/modules/stock_backend/screens/stock-route-detail.js.map +1 -1
  672. package/dist/modules/stock_backend/screens/stock-routes-list.d.ts +1 -1
  673. package/dist/modules/stock_backend/screens/stock-routes-list.d.ts.map +1 -1
  674. package/dist/modules/stock_backend/screens/stock-routes-list.js +1 -1
  675. package/dist/modules/stock_backend/screens/stock-routes-list.js.map +1 -1
  676. package/dist/modules/stock_backend/screens/transfer-create.d.ts.map +1 -1
  677. package/dist/modules/stock_backend/screens/transfer-create.js +1 -1
  678. package/dist/modules/stock_backend/screens/transfer-create.js.map +1 -1
  679. package/dist/modules/stock_backend/screens/transfer-detail.d.ts.map +1 -1
  680. package/dist/modules/stock_backend/screens/transfer-detail.js +3 -2
  681. package/dist/modules/stock_backend/screens/transfer-detail.js.map +1 -1
  682. package/dist/modules/stock_backend/screens/transfers-list.d.ts +1 -1
  683. package/dist/modules/stock_backend/screens/transfers-list.d.ts.map +1 -1
  684. package/dist/modules/stock_backend/screens/transfers-list.js +1 -1
  685. package/dist/modules/stock_backend/screens/transfers-list.js.map +1 -1
  686. package/dist/modules/stock_backend/screens/warehouse-create.d.ts.map +1 -1
  687. package/dist/modules/stock_backend/screens/warehouse-create.js +1 -1
  688. package/dist/modules/stock_backend/screens/warehouse-create.js.map +1 -1
  689. package/dist/modules/stock_backend/screens/warehouses-list.d.ts +1 -1
  690. package/dist/modules/stock_backend/screens/warehouses-list.d.ts.map +1 -1
  691. package/dist/modules/stock_backend/screens/warehouses-list.js +1 -1
  692. package/dist/modules/stock_backend/screens/warehouses-list.js.map +1 -1
  693. package/dist/modules/stock_backend/search.d.ts +29 -0
  694. package/dist/modules/stock_backend/search.d.ts.map +1 -1
  695. package/dist/modules/stock_backend/search.js +22 -0
  696. package/dist/modules/stock_backend/search.js.map +1 -1
  697. package/dist/modules/user_backend/client/access-policy-modal.d.mts +4 -4
  698. package/dist/modules/user_backend/client/access-policy-modal.d.mts.map +1 -1
  699. package/dist/modules/user_backend/client/access-policy-modal.mjs +1 -1
  700. package/dist/modules/user_backend/client/access-policy-modal.mjs.map +3 -3
  701. package/dist/modules/user_backend/client/role-modal.d.mts +6 -6
  702. package/dist/modules/user_backend/client/role-modal.d.mts.map +1 -1
  703. package/dist/modules/user_backend/client/role-modal.mjs +1 -1
  704. package/dist/modules/user_backend/client/role-modal.mjs.map +3 -3
  705. package/dist/modules/user_backend/client/user-modal.d.mts +9 -9
  706. package/dist/modules/user_backend/client/user-modal.d.mts.map +1 -1
  707. package/dist/modules/user_backend/client/user-modal.mjs +1 -1
  708. package/dist/modules/user_backend/client/user-modal.mjs.map +3 -3
  709. package/dist/modules/user_backend/messages.d.ts +0 -6
  710. package/dist/modules/user_backend/messages.d.ts.map +1 -1
  711. package/dist/modules/user_backend/messages.js +0 -6
  712. package/dist/modules/user_backend/messages.js.map +1 -1
  713. package/dist/modules/user_backend/screens/access-policies-list.d.ts.map +1 -1
  714. package/dist/modules/user_backend/screens/access-policies-list.js +1 -1
  715. package/dist/modules/user_backend/screens/access-policies-list.js.map +1 -1
  716. package/dist/modules/user_backend/screens/profile-form.d.ts.map +1 -1
  717. package/dist/modules/user_backend/screens/profile-form.js +1 -1
  718. package/dist/modules/user_backend/screens/profile-form.js.map +1 -1
  719. package/dist/modules/user_backend/screens/roles-list.d.ts.map +1 -1
  720. package/dist/modules/user_backend/screens/roles-list.js +1 -1
  721. package/dist/modules/user_backend/screens/roles-list.js.map +1 -1
  722. package/dist/modules/user_backend/screens/users-list.d.ts.map +1 -1
  723. package/dist/modules/user_backend/screens/users-list.js +1 -1
  724. package/dist/modules/user_backend/screens/users-list.js.map +1 -1
  725. package/dist/modules/website_backend/screens/page-frame.d.ts +2 -3
  726. package/dist/modules/website_backend/screens/page-frame.d.ts.map +1 -1
  727. package/dist/modules/website_backend/screens/page-frame.js +2 -2
  728. package/dist/modules/website_backend/screens/page-frame.js.map +1 -1
  729. package/dist/permission-catalogue.d.ts.map +1 -1
  730. package/dist/permission-catalogue.js +2 -0
  731. package/dist/permission-catalogue.js.map +1 -1
  732. package/dist/role-templates.d.ts.map +1 -1
  733. package/dist/role-templates.js +23 -3
  734. package/dist/role-templates.js.map +1 -1
  735. package/dist/scaffold/index.js +1 -1
  736. package/dist/ui/client/live-doc-shell.d.ts +27 -1
  737. package/dist/ui/client/live-doc-shell.d.ts.map +1 -1
  738. package/dist/ui/client/live-doc-shell.js +43 -5
  739. package/dist/ui/client/live-doc-shell.js.map +1 -1
  740. package/dist/ui/client/live-doc-tail.d.ts +4 -0
  741. package/dist/ui/client/live-doc-tail.d.ts.map +1 -0
  742. package/dist/ui/client/live-doc-tail.js +21 -0
  743. package/dist/ui/client/live-doc-tail.js.map +1 -0
  744. package/dist/ui/client/live-doc-view.d.ts +18 -0
  745. package/dist/ui/client/live-doc-view.d.ts.map +1 -1
  746. package/dist/ui/client/live-doc-view.js +183 -4
  747. package/dist/ui/client/live-doc-view.js.map +1 -1
  748. package/dist/ui/client/live-doc.css +81 -0
  749. package/dist/ui/client/live-doc.d.mts +6 -3
  750. package/dist/ui/client/live-doc.d.mts.map +1 -1
  751. package/dist/ui/client/live-doc.mjs +14 -10
  752. package/dist/ui/client/live-doc.mjs.map +4 -4
  753. package/dist/ui/client/record-modal-form.d.ts +10 -0
  754. package/dist/ui/client/record-modal-form.d.ts.map +1 -1
  755. package/dist/ui/client/record-modal-form.js +3 -1
  756. package/dist/ui/client/record-modal-form.js.map +1 -1
  757. package/dist/ui/client/record-modal.d.ts +9 -1
  758. package/dist/ui/client/record-modal.d.ts.map +1 -1
  759. package/dist/ui/client/record-modal.js +78 -17
  760. package/dist/ui/client/record-modal.js.map +1 -1
  761. package/dist/ui/index.d.ts +2 -2
  762. package/dist/ui/index.d.ts.map +1 -1
  763. package/dist/ui/index.js +2 -2
  764. package/dist/ui/index.js.map +1 -1
  765. package/dist/ui/layout.d.ts +2 -2
  766. package/dist/ui/layout.d.ts.map +1 -1
  767. package/dist/ui/layout.js +3 -3
  768. package/dist/ui/layout.js.map +1 -1
  769. package/dist/ui/record-modal.d.ts +3 -0
  770. package/dist/ui/record-modal.d.ts.map +1 -1
  771. package/dist/ui/record-modal.js +15 -1
  772. package/dist/ui/record-modal.js.map +1 -1
  773. package/package.json +4 -4
  774. package/dist/modules/flow/functions.d.ts +0 -3
  775. package/dist/modules/flow/functions.d.ts.map +0 -1
  776. package/dist/modules/flow/functions.js +0 -1857
  777. package/dist/modules/flow/functions.js.map +0 -1
  778. package/dist/modules/flow/operations.d.ts +0 -414
  779. package/dist/modules/flow/operations.d.ts.map +0 -1
  780. package/dist/modules/flow/operations.js +0 -1671
  781. package/dist/modules/flow/operations.js.map +0 -1
@@ -0,0 +1,439 @@
1
+ import { asc, bucketEq, compileListFilter, desc, eq, from, gte, inArray, isNotNull, isNull, lt, not, or, } from '@ketvietlab/ketjs';
2
+ import { FIELD_FILTER_PREFIX, emptyIssueListState, issueListSearch } from '../search.js';
3
+ import { n } from '../domain/command.js';
4
+ import { restrictToVisible, visibleProjects } from '../membership.js';
5
+ import { businessTimezone, businessToday } from './calendar.js';
6
+ import { listTimeline } from '../../mail/index.js';
7
+ import { following } from './issue-followers.js';
8
+ /**
9
+ * How far along each issue is, counted from its sub-tasks.
10
+ *
11
+ * "Done" is a sub-task sitting in a column with `terminalState` — the concept
12
+ * models.ts introduced for exactly this kind of question, so that a team whose
13
+ * workflow is five columns wide gets the same answer as one running three, and
14
+ * neither has to be called "Done".
15
+ *
16
+ * Sub-tasks are the checklist. The description can hold one too, and does, but
17
+ * that one is prose: nobody can be given an item in it, nothing can be counted
18
+ * from outside the document, and it is not what this reads.
19
+ *
20
+ * Unlimited on purpose, unlike `dependenciesFor` below. The query is already
21
+ * bounded twice over — by one page of parents, and by sub-tasks being a
22
+ * relation a person types out by hand — and a cap on a *count* is worse than a
23
+ * cap on a list: a truncated list looks truncated, while 3/5 that should read
24
+ * 3/9 just looks wrong.
25
+ */
26
+ export async function progressOf(ctx, issueIds) {
27
+ const tally = new Map();
28
+ if (!issueIds.length)
29
+ return tally;
30
+ const I = ctx.table('flow.Issue');
31
+ const children = await ctx.db.all(from(I).where(inArray(I.parentIssueId, issueIds)).where(eq(I.active, true)));
32
+ if (!children.length)
33
+ return tally;
34
+ const C = ctx.table('flow.Column');
35
+ const columnIds = [...new Set(children.map((child) => String(child.columnId)))];
36
+ const columns = await ctx.db.all(from(C).where(inArray(C.id, columnIds)));
37
+ const terminal = new Set(columns.filter((column) => column.terminalState).map((column) => String(column.id)));
38
+ for (const child of children) {
39
+ const key = String(child.parentIssueId);
40
+ const at = tally.get(key) ?? { done: 0, total: 0 };
41
+ at.total += 1;
42
+ if (terminal.has(String(child.columnId)))
43
+ at.done += 1;
44
+ tally.set(key, at);
45
+ }
46
+ return tally;
47
+ }
48
+ export async function serializeIssueList(ctx, rows) {
49
+ const ids = (values) => [...new Set(values.filter(Boolean).map(String))];
50
+ const columnIds = ids(rows.map((row) => row.columnId));
51
+ const epicIds = ids(rows.map((row) => row.epicId));
52
+ const sprintIds = ids(rows.map((row) => row.sprintId));
53
+ const userIds = ids(rows.map((row) => row.assigneeUserId));
54
+ const typeIds = ids(rows.map((row) => row.typeId));
55
+ const issueIds = rows.map((row) => String(row.id));
56
+ // The project too, for the one list that spans them: an issue read outside
57
+ // its own board has to say which board it came from.
58
+ const projectIds = ids(rows.map((row) => row.projectId));
59
+ const [columns, epics, sprints, users, projects, types, progress, values] = await Promise.all([
60
+ columnIds.length
61
+ ? ctx.db.all(from(ctx.table('flow.Column')).where(inArray(ctx.table('flow.Column').id, columnIds)))
62
+ : [],
63
+ epicIds.length
64
+ ? ctx.db.all(from(ctx.table('flow.Epic')).where(inArray(ctx.table('flow.Epic').id, epicIds)))
65
+ : [],
66
+ sprintIds.length
67
+ ? ctx.db.all(from(ctx.table('flow.Sprint')).where(inArray(ctx.table('flow.Sprint').id, sprintIds)))
68
+ : [],
69
+ userIds.length
70
+ ? ctx.db.all(from(ctx.table('user.User')).where(inArray(ctx.table('user.User').id, userIds)))
71
+ : [],
72
+ projectIds.length
73
+ ? ctx.db.all(from(ctx.table('flow.Project')).where(inArray(ctx.table('flow.Project').id, projectIds)))
74
+ : [],
75
+ typeIds.length
76
+ ? ctx.db.all(from(ctx.table('flow.IssueType')).where(inArray(ctx.table('flow.IssueType').id, typeIds)))
77
+ : [],
78
+ progressOf(ctx, issueIds),
79
+ // Custom field values for the whole page in one query, so a list can show
80
+ // a column for them. Keyed by field id rather than code, because a screen
81
+ // holds the definitions and matches on what it was given.
82
+ issueIds.length
83
+ ? ctx.db.all(from(ctx.table('flow.IssueFieldValue')).where(inArray(ctx.table('flow.IssueFieldValue').issueId, issueIds)))
84
+ : [],
85
+ ]);
86
+ const by = (values) => new Map(values.map((row) => [String(row.id), row]));
87
+ const columnBy = by(columns);
88
+ const epicBy = by(epics);
89
+ const sprintBy = by(sprints);
90
+ const userBy = by(users);
91
+ const projectBy = by(projects);
92
+ const typeBy = by(types);
93
+ const fieldsBy = new Map();
94
+ for (const entry of values) {
95
+ const key = String(entry.issueId);
96
+ const held = fieldsBy.get(key) ?? {};
97
+ held[String(entry.fieldId)] = entry.value;
98
+ fieldsBy.set(key, held);
99
+ }
100
+ return rows.map((row) => {
101
+ const counted = progress.get(String(row.id));
102
+ return {
103
+ ...row,
104
+ /**
105
+ * The day a bar starts, which is not the same fact as `startDate`.
106
+ *
107
+ * Nobody sets a start date on most issues, and a chart still has to
108
+ * begin somewhere; the day it was written down is the honest stand-in.
109
+ * Kept separate from the stored value on purpose — a form bound to this
110
+ * would show the fallback as an answer, and saving would then write it
111
+ * back as one.
112
+ */
113
+ startsOn: row.startDate ?? (row.createdAt ? String(row.createdAt).slice(0, 10) : null),
114
+ subtaskTotal: counted?.total ?? 0,
115
+ subtaskDone: counted?.done ?? 0,
116
+ /**
117
+ * Null, not zero, when an issue has no sub-tasks. "Nothing to do" and
118
+ * "nothing done yet" are different facts, and a column of 0% against every
119
+ * issue nobody had broken down would report the second while meaning the
120
+ * first.
121
+ */
122
+ progress: counted ? Math.round((counted.done * 100) / counted.total) : null,
123
+ projectName: row.projectId ? (projectBy.get(String(row.projectId))?.name ?? row.projectId) : null,
124
+ columnName: row.columnId ? (columnBy.get(String(row.columnId))?.name ?? row.columnId) : null,
125
+ /**
126
+ * Whether this issue's column is one the board treats as finished.
127
+ *
128
+ * The name alone cannot answer it — "Done", "Shipped" and "Closed" are
129
+ * all somebody's terminal column and none of them is a keyword — so a
130
+ * screen wanting to mark a late issue would have to re-read the columns
131
+ * it was just handed.
132
+ */
133
+ terminal: row.columnId ? columnBy.get(String(row.columnId))?.terminalState === true : false,
134
+ epicTitle: row.epicId ? (epicBy.get(String(row.epicId))?.title ?? row.epicId) : null,
135
+ sprintName: row.sprintId ? (sprintBy.get(String(row.sprintId))?.name ?? row.sprintId) : null,
136
+ assigneeName: row.assigneeUserId
137
+ ? (userBy.get(String(row.assigneeUserId))?.name ?? row.assigneeUserId)
138
+ : null,
139
+ /** `{ [fieldId]: value }`, for whatever fields this row happens to hold. */
140
+ fieldValues: fieldsBy.get(String(row.id)) ?? {},
141
+ typeName: row.typeId ? (typeBy.get(String(row.typeId))?.name ?? row.typeId) : null,
142
+ typeColor: row.typeId ? (typeBy.get(String(row.typeId))?.color ?? null) : null,
143
+ };
144
+ });
145
+ }
146
+ /**
147
+ * How many issues one custom-field filter may match.
148
+ *
149
+ * The value lives in another table and this query builder has no JOIN, so the
150
+ * rule is answered by collecting ids and handing them to `IN (...)`. That list
151
+ * becomes SQL parameters, and every database has a ceiling on those — SQLite's
152
+ * has historically been 999.
153
+ *
154
+ * Capped rather than left to fail at the driver, and reported rather than
155
+ * trimmed quietly: a truncated *list* looks truncated, while a truncated
156
+ * *filter* looks like an answer. `listIssues` passes `fieldFilterTruncated`
157
+ * back so a screen can say so.
158
+ */
159
+ export const FIELD_FILTER_MATCHES = 900;
160
+ /**
161
+ * Answers every `field:<code>` rule as a set of issue ids, and takes the rules
162
+ * out of the state on the way.
163
+ *
164
+ * The value lives in another table, so the rule cannot compile against a column
165
+ * of `flow.Issue`. Rewriting it in place does not work either — the spec
166
+ * declares a select field's `choices`, and a list of ids is not among them, so
167
+ * validation refuses the rewritten rule. So the rules leave, and what they
168
+ * selected is applied to the query directly.
169
+ *
170
+ * Only the top level is read, which is the only shape the filter UI builds
171
+ * (facets and the custom-filter row are both flat, and flat means AND). A rule
172
+ * nested inside an `or` group is left where it is rather than quietly hoisted
173
+ * out of it: removing one from an `or` widens the group, and answering a
174
+ * narrower question than was asked is the failure that looks like success.
175
+ */
176
+ export async function resolveFieldFilters(ctx, state, projectId) {
177
+ const top = (state.filters ?? []);
178
+ const rules = top.filter((node) => node?.kind === 'rule' && String(node.field ?? '').startsWith(FIELD_FILTER_PREFIX));
179
+ if (!rules.length)
180
+ return { state, ids: null, truncated: false };
181
+ const defs = await ctx.db.select('flow.FieldDef', projectId ? { projectId, active: true } : { active: true });
182
+ const byCode = new Map(defs.map((def) => [String(def.code), def]));
183
+ let truncated = false;
184
+ let matched = null;
185
+ for (const rule of rules) {
186
+ const code = String(rule.field).slice(FIELD_FILTER_PREFIX.length);
187
+ const def = byCode.get(code);
188
+ const found = new Set();
189
+ if (def) {
190
+ const V = ctx.table('flow.IssueFieldValue');
191
+ let query = from(V).where(eq(V.fieldId, def.id));
192
+ const operator = String(rule.operator);
193
+ if (operator === 'equals')
194
+ query = query.where(eq(V.value, String(rule.value ?? '')));
195
+ else if (operator === 'anyOf') {
196
+ const values = (Array.isArray(rule.value) ? rule.value : [rule.value]).map(String);
197
+ query = query.where(inArray(V.value, values));
198
+ }
199
+ // `isSet` needs no clause of its own: a row exists only where there is a
200
+ // value, because emptying a field deletes its row rather than storing "".
201
+ const rows = await ctx.db.all(query.limit(FIELD_FILTER_MATCHES + 1));
202
+ if (rows.length > FIELD_FILTER_MATCHES)
203
+ truncated = true;
204
+ for (const row of rows.slice(0, FIELD_FILTER_MATCHES))
205
+ found.add(String(row.issueId));
206
+ }
207
+ // Several rules narrow each other, which is what a flat filter row means.
208
+ matched = matched ? new Set([...matched].filter((id) => found.has(id))) : found;
209
+ }
210
+ return {
211
+ state: { ...state, filters: top.filter((node) => !rules.includes(node)) },
212
+ ids: [...(matched ?? new Set())],
213
+ truncated,
214
+ };
215
+ }
216
+ export const listStateOf = (value) => value && typeof value === 'object' ? value : null;
217
+ /**
218
+ * The columns a board treats as finished, and the one it starts from.
219
+ *
220
+ * Read once and shared, because "late" and "not started" both need them and
221
+ * two readings could disagree. A finished issue is never late, however long
222
+ * ago its date was — the work is done, and a red date on it would be asking
223
+ * for something that has already happened.
224
+ */
225
+ export const boardEdges = async (ctx) => {
226
+ const C = ctx.table('flow.Column');
227
+ const columns = await ctx.db.all(from(C).where(eq(C.active, true)));
228
+ const firstOf = new Map();
229
+ for (const column of columns) {
230
+ if (column.terminalState)
231
+ continue;
232
+ const key = String(column.projectId);
233
+ const held = firstOf.get(key);
234
+ const at = { id: String(column.id), sequence: n(column.sequence) };
235
+ if (!held || at.sequence < held.sequence)
236
+ firstOf.set(key, at);
237
+ }
238
+ return {
239
+ terminal: columns.filter((column) => column.terminalState).map((column) => String(column.id)),
240
+ first: [...firstOf.values()].map((column) => column.id),
241
+ };
242
+ };
243
+ export const issueQuery = async (ctx, args) => {
244
+ const I = ctx.table('flow.Issue');
245
+ // Every issue read — list, group, buckets, options — comes through here, so
246
+ // this is where a caller stops seeing projects they are not on. One gate
247
+ // rather than four, because the fourth is the one somebody forgets.
248
+ const visible = await visibleProjects(ctx);
249
+ const given = listStateOf(args.listState) ?? emptyIssueListState();
250
+ // A caller may still name a timezone — an agent reporting for somewhere else
251
+ // — but no caller has to, and the screens no longer do. The default is the
252
+ // company's own calendar rather than UTC, which was nobody's calendar.
253
+ const timezone = String(args.timezone ?? '').trim() || (await businessTimezone(ctx));
254
+ let query = from(I);
255
+ // The spec has to know the project's own fields, or `parseListState` would
256
+ // have dropped their rules as unknown before they ever reached here.
257
+ const defs = args.projectId
258
+ ? await ctx.db.select('flow.FieldDef', { projectId: args.projectId, active: true })
259
+ : [];
260
+ const { state, ids, truncated } = await resolveFieldFilters(ctx, given, args.projectId);
261
+ const spec = issueListSearch(I, defs);
262
+ const compiled = compileListFilter(spec, state, { timezone });
263
+ if (compiled)
264
+ query = query.where(compiled);
265
+ query = restrictToVisible(query, I.projectId, visible);
266
+ // No match is not "no filter": asking for a value nothing holds has to answer
267
+ // with nothing, which an empty list already does — `query.ts` compiles an
268
+ // empty `IN` to `1 = 0` rather than to no clause at all.
269
+ if (ids)
270
+ query = query.where(inArray(I.id, ids));
271
+ const path = Array.isArray(args.path) ? args.path : [];
272
+ for (let index = 0; index < path.length; index++) {
273
+ const selected = state.groupBy[index];
274
+ const field = spec.groupable?.find((candidate) => candidate.key === selected?.key);
275
+ if (!field)
276
+ continue;
277
+ const value = path[index];
278
+ query = query.where(selected?.interval
279
+ ? bucketEq(field.col, selected.interval, timezone, String(value))
280
+ : eq(field.col, value));
281
+ }
282
+ if (args.projectId)
283
+ query = query.where(eq(I.projectId, args.projectId));
284
+ if (args.columnId)
285
+ query = query.where(eq(I.columnId, args.columnId));
286
+ if (args.epicId)
287
+ query = query.where(eq(I.epicId, args.epicId));
288
+ if (args.sprintId)
289
+ query = query.where(eq(I.sprintId, args.sprintId));
290
+ if (args.assigneeUserId)
291
+ query = query.where(eq(I.assigneeUserId, args.assigneeUserId));
292
+ // "Assigned to me" is resolved here rather than by the caller: a screen has
293
+ // no cheap way to learn who is signed in, and `activity.listMy` already
294
+ // settles the question the same way. A request with no actor matches
295
+ // nothing, which is the safe reading of "mine".
296
+ if (args.mine === true)
297
+ query = query.where(eq(I.assigneeUserId, ctx.actor ?? '\u0000'));
298
+ // A day, and the query narrows to what was already due before it and is not
299
+ // finished. Here rather than at each caller so the list, the counts and the
300
+ // rail cannot drift apart on what "late" means.
301
+ if (args.overdueOn) {
302
+ const { terminal } = await boardEdges(ctx);
303
+ query = query.where(isNotNull(I.dueDate), lt(I.dueDate, String(args.overdueOn)), ...(terminal.length ? [not(inArray(I.columnId, terminal))] : []));
304
+ }
305
+ if (!state.includeArchived && args.includeArchived !== true)
306
+ query = query.where(eq(I.active, true));
307
+ const sorts = state.sort.length ? state.sort : emptyIssueListState().sort;
308
+ const sortable = new Map((spec.sortable ?? []).map((field) => [field.key, field.col]));
309
+ for (const sort of sorts) {
310
+ const col = sortable.get(sort.key);
311
+ if (col)
312
+ query = query.orderBy(sort.dir === 'desc' ? desc(col) : asc(col));
313
+ }
314
+ return { query, state, spec, timezone, truncated };
315
+ };
316
+ export async function listIssues(ctx, args) {
317
+ const { query, truncated } = await issueQuery(ctx, args);
318
+ const offset = Math.max(0, Number.parseInt(String(args.cursor ?? '0'), 10) || 0);
319
+ const limit = Math.max(1, Math.min(200, n(args.limit ?? 50)));
320
+ const [total, page] = await Promise.all([
321
+ ctx.db.count(query),
322
+ ctx.db.all(query.limit(limit).offset(offset)),
323
+ ]);
324
+ return {
325
+ rows: await serializeIssueList(ctx, page),
326
+ total,
327
+ nextCursor: offset + limit < total ? String(offset + limit) : null,
328
+ // Only said when it happened. A filter that quietly stopped short reads as
329
+ // an answer, which is the one thing it must not do.
330
+ ...(truncated ? { fieldFilterTruncated: true } : {}),
331
+ };
332
+ }
333
+ export async function groupIssues(ctx, args) {
334
+ const { query, state, spec, timezone } = await issueQuery(ctx, args);
335
+ const path = Array.isArray(args.path) ? args.path : [];
336
+ const selected = state.groupBy[path.length];
337
+ const field = spec.groupable?.find((candidate) => candidate.key === selected?.key);
338
+ if (!field)
339
+ return [];
340
+ let grouped = query
341
+ .groupBy({ col: field.col, interval: selected?.interval, timezone })
342
+ .orderGroupsBy({ by: 'key', dir: 'asc' });
343
+ if (args.limit != null)
344
+ grouped = grouped.limit(Number(args.limit));
345
+ if (args.offset != null)
346
+ grouped = grouped.offset(Number(args.offset));
347
+ return ctx.db.group(grouped);
348
+ }
349
+ export async function issueBuckets(ctx, args, today) {
350
+ const { query, timezone } = await issueQuery(ctx, args);
351
+ // The same calendar the query was compiled against, so the overdue count and
352
+ // the list it sits beside cannot disagree about where the day ends.
353
+ const day = String(today ?? '').trim() || (await businessToday(ctx, timezone));
354
+ const I = ctx.table('flow.Issue');
355
+ const { terminal, first } = await boardEdges(ctx);
356
+ // `count` rather than `all`: none of these needs the rows.
357
+ const open = terminal.length ? [not(inArray(I.columnId, terminal))] : [];
358
+ const [total, done, overdue, waiting] = await Promise.all([
359
+ ctx.db.count(query),
360
+ terminal.length ? ctx.db.count(query.where(inArray(I.columnId, terminal))) : Promise.resolve(0),
361
+ ctx.db.count(query.where(...open, isNotNull(I.dueDate), lt(I.dueDate, day))),
362
+ first.length
363
+ ? ctx.db.count(query.where(...open, inArray(I.columnId, first), or(isNull(I.dueDate), gte(I.dueDate, day))))
364
+ : Promise.resolve(0),
365
+ ]);
366
+ return {
367
+ total,
368
+ done,
369
+ overdue,
370
+ waiting,
371
+ working: Math.max(0, total - done - overdue - waiting),
372
+ today: day,
373
+ };
374
+ }
375
+ export async function issueDetail(ctx, id) {
376
+ const row = (await ctx.db.select('flow.Issue', { id }))[0];
377
+ if (!row)
378
+ return null;
379
+ const [serialized] = await serializeIssueList(ctx, [row]);
380
+ const [tags, outgoing, incoming, comments, children] = await Promise.all([
381
+ ctx.db.select('flow.IssueTag', { issueId: id }),
382
+ ctx.db.select('flow.IssueDependency', { issueId: id }),
383
+ ctx.db.select('flow.IssueDependency', { dependsOnIssueId: id }),
384
+ listTimeline(ctx, String(row.threadId), { limit: 100 }),
385
+ // Sub-tasks. `parentIssueId` has been modelled, validated for project and
386
+ // for cycles since the start, and until now had no screen at all — the
387
+ // detail page is the only place the relationship reads from either end.
388
+ ctx.db.select('flow.Issue', { parentIssueId: id, active: true }),
389
+ ]);
390
+ const tagIds = tags.map((row) => row.tagId);
391
+ const tagRows = tagIds.length
392
+ ? await ctx.db.all(from(ctx.table('flow.Tag')).where(inArray(ctx.table('flow.Tag').id, tagIds)))
393
+ : [];
394
+ // The far side of each dependency, by id and in one query — the same shape
395
+ // serializeIssueList already uses for column/epic/sprint/assignee. A screen
396
+ // that resolved these itself could only do it by listing the project's
397
+ // issues and filtering, which silently prints a raw id for any dependency
398
+ // outside that page: `issue.options` caps at 100 rows, so a 1000-issue
399
+ // project showed uuids for every dependency older than the newest hundred.
400
+ const relatedIds = [
401
+ ...new Set([...outgoing.map((row) => row.dependsOnIssueId), ...incoming.map((row) => row.issueId)]),
402
+ ].map(String);
403
+ const relatedRows = relatedIds.length
404
+ ? await ctx.db.all(from(ctx.table('flow.Issue')).where(inArray(ctx.table('flow.Issue').id, relatedIds)))
405
+ : [];
406
+ const titleOf = new Map(relatedRows.map((row) => [String(row.id), String(row.title)]));
407
+ // Every field this project defines, each carrying whatever this issue holds
408
+ // for it — the definitions, not just the answers, because a field nobody has
409
+ // filled in still has to appear on the form for anyone to fill it in.
410
+ const [defs, held] = await Promise.all([
411
+ ctx.db.select('flow.FieldDef', { projectId: row.projectId, active: true }),
412
+ ctx.db.select('flow.IssueFieldValue', { issueId: id }),
413
+ ]);
414
+ const answerOf = new Map(held.map((entry) => [String(entry.fieldId), entry.value]));
415
+ const fields = defs
416
+ .sort((a, b) => n(a.sequence) - n(b.sequence) || String(a.id).localeCompare(String(b.id)))
417
+ .map((def) => ({ ...def, value: answerOf.get(String(def.id)) ?? null }));
418
+ const parent = row.parentIssueId
419
+ ? ((await ctx.db.select('flow.Issue', { id: row.parentIssueId }))[0] ?? null)
420
+ : null;
421
+ return {
422
+ ...serialized,
423
+ parentTitle: parent ? String(parent.title) : null,
424
+ fields,
425
+ following: await following(ctx, id),
426
+ children: await serializeIssueList(ctx, children),
427
+ tags: tagRows,
428
+ dependencies: outgoing.map((row) => ({
429
+ ...row,
430
+ dependsOnTitle: titleOf.get(String(row.dependsOnIssueId)) ?? row.dependsOnIssueId,
431
+ })),
432
+ dependents: incoming.map((row) => ({
433
+ ...row,
434
+ issueTitle: titleOf.get(String(row.issueId)) ?? row.issueId,
435
+ })),
436
+ comments,
437
+ };
438
+ }
439
+ //# sourceMappingURL=issue-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-list.js","sourceRoot":"","sources":["../../../../../../../../packages/ketsuite/src/modules/flow/queries/issue-list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Ctx, Row } from '@ketvietlab/ketjs';
2
+ /** Small pickers read this shape: active first, filtered by name, capped to a page. */
3
+ export declare const optionRows: (ctx: Ctx, model: string, args: Record<string, unknown>, order?: (a: Row, b: Row) => number) => Promise<Row[]>;
4
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../../../../packages/ketsuite/src/modules/flow/queries/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAGjD,uFAAuF;AACvF,eAAO,MAAM,UAAU,QAChB,GAAG,SACD,MAAM,QACP,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UACrB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,KACjC,OAAO,CAAC,GAAG,EAAE,CAiBf,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { n, normalized } from '../domain/command.js';
2
+ /** Small pickers read this shape: active first, filtered by name, capped to a page. */
3
+ export const optionRows = async (ctx, model, args, order) => {
4
+ const rows = await ctx.db.select(model, args.includeArchived === true ? {} : { active: true });
5
+ const needle = normalized(args.search);
6
+ return rows
7
+ .filter((row) => !needle || normalized(row.name).includes(needle) || normalized(row.code).includes(needle))
8
+ .sort((a, b) => (order ? order(a, b) : 0) ||
9
+ String(a.name ?? '').localeCompare(String(b.name ?? '')) ||
10
+ String(a.id).localeCompare(String(b.id)))
11
+ .slice(Math.max(0, n(args.cursor ?? 0)), Math.max(0, n(args.cursor ?? 0)) + Math.max(1, Math.min(200, n(args.limit ?? 80))));
12
+ };
13
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../../../../../packages/ketsuite/src/modules/flow/queries/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEpD,uFAAuF;AACvF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,GAAQ,EACR,KAAa,EACb,IAA6B,EAC7B,KAAkC,EAClB,EAAE;IAClB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9F,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtC,OAAO,IAAI;SACR,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CACnG;SACA,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAC3C;SACA,KAAK,CACJ,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAChC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CACnF,CAAA;AACL,CAAC,CAAA"}
@@ -0,0 +1,24 @@
1
+ import type { Ctx } from '@ketvietlab/ketjs';
2
+ /**
3
+ * What a sprint is carrying, and how much of it is finished — see FLW-021.
4
+ *
5
+ * `estimate` has been stored, shown on the form and shown in the summary since
6
+ * the module was written, and added up nowhere: a sprint had no total and there
7
+ * was no velocity to read. Counted per sprint in two grouped passes rather than
8
+ * one query per sprint.
9
+ */
10
+ export declare function sprintTotals(ctx: Ctx, projectId: string): Promise<Map<string, {
11
+ total: number;
12
+ done: number;
13
+ unfinished: number;
14
+ estimate: number;
15
+ estimateDone: number;
16
+ }>>;
17
+ /** The same reading for epics, which have the same missing total. */
18
+ export declare function epicTotals(ctx: Ctx, projectId: string): Promise<Map<string, {
19
+ total: number;
20
+ done: number;
21
+ estimate: number;
22
+ estimateDone: number;
23
+ }>>;
24
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../../../../../packages/ketsuite/src/modules/flow/queries/progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAI5C;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,MAAM,GAChB,OAAO,CACR,GAAG,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CACzG,CA8BA;AAED,qEAAqE;AACrE,wBAAsB,UAAU,CAC9B,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAuB/F"}
@@ -0,0 +1,54 @@
1
+ import { eq, from, isNotNull } from '@ketvietlab/ketjs';
2
+ import { n } from '../domain/command.js';
3
+ /**
4
+ * What a sprint is carrying, and how much of it is finished — see FLW-021.
5
+ *
6
+ * `estimate` has been stored, shown on the form and shown in the summary since
7
+ * the module was written, and added up nowhere: a sprint had no total and there
8
+ * was no velocity to read. Counted per sprint in two grouped passes rather than
9
+ * one query per sprint.
10
+ */
11
+ export async function sprintTotals(ctx, projectId) {
12
+ const tally = new Map();
13
+ const terminal = new Set((await ctx.db.select('flow.Column', { projectId, terminalState: true, active: true })).map((row) => String(row.id)));
14
+ // One read of the project's live issues that carry a sprint. Estimates are
15
+ // decimals, which no `count` adds up, so the sum happens here — over the
16
+ // sprint members only, not over the project.
17
+ const I = ctx.table('flow.Issue');
18
+ const rows = await ctx.db.all(from(I).where(eq(I.projectId, projectId), eq(I.active, true), isNotNull(I.sprintId)));
19
+ for (const row of rows) {
20
+ const key = String(row.sprintId);
21
+ const at = tally.get(key) ?? { total: 0, done: 0, unfinished: 0, estimate: 0, estimateDone: 0 };
22
+ const finished = terminal.has(String(row.columnId));
23
+ at.total += 1;
24
+ at.estimate += n(row.estimate);
25
+ if (finished) {
26
+ at.done += 1;
27
+ at.estimateDone += n(row.estimate);
28
+ }
29
+ else
30
+ at.unfinished += 1;
31
+ tally.set(key, at);
32
+ }
33
+ return tally;
34
+ }
35
+ /** The same reading for epics, which have the same missing total. */
36
+ export async function epicTotals(ctx, projectId) {
37
+ const tally = new Map();
38
+ const terminal = new Set((await ctx.db.select('flow.Column', { projectId, terminalState: true, active: true })).map((row) => String(row.id)));
39
+ const I = ctx.table('flow.Issue');
40
+ const rows = await ctx.db.all(from(I).where(eq(I.projectId, projectId), eq(I.active, true), isNotNull(I.epicId)));
41
+ for (const row of rows) {
42
+ const key = String(row.epicId);
43
+ const at = tally.get(key) ?? { total: 0, done: 0, estimate: 0, estimateDone: 0 };
44
+ at.total += 1;
45
+ at.estimate += n(row.estimate);
46
+ if (terminal.has(String(row.columnId))) {
47
+ at.done += 1;
48
+ at.estimateDone += n(row.estimate);
49
+ }
50
+ tally.set(key, at);
51
+ }
52
+ return tally;
53
+ }
54
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../../../../../../packages/ketsuite/src/modules/flow/queries/progress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Ctx, Row } from '@ketvietlab/ketjs';
2
+ /** Project visibility and collection filters must run before either paging or counting. */
3
+ export declare const matchingProjects: (ctx: Ctx, args: Record<string, unknown>) => Promise<Row[]>;
4
+ //# sourceMappingURL=project-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-list.d.ts","sourceRoot":"","sources":["../../../../../../../packages/ketsuite/src/modules/flow/queries/project-list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAKjD,2FAA2F;AAC3F,eAAO,MAAM,gBAAgB,QAAe,GAAG,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,OAAO,CAAC,GAAG,EAAE,CAqB7F,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { visibleProjects } from '../membership.js';
2
+ import { projectsWithMyWork } from '../projects.js';
3
+ import { normalized } from '../domain/command.js';
4
+ /** Project visibility and collection filters must run before either paging or counting. */
5
+ export const matchingProjects = async (ctx, args) => {
6
+ const visible = await visibleProjects(ctx);
7
+ if (visible !== null && !visible.length)
8
+ return [];
9
+ const visibleIds = visible === null ? null : new Set(visible);
10
+ const mine = args.mine === true ? await projectsWithMyWork(ctx) : null;
11
+ const needle = normalized(args.search);
12
+ const rows = await ctx.db.select('flow.Project', args.archivedOnly === true ? { active: false } : args.includeArchived === true ? {} : { active: true });
13
+ return rows
14
+ .filter((row) => (visibleIds === null || visibleIds.has(String(row.id))) &&
15
+ (mine === null || mine.has(String(row.id))) &&
16
+ (!needle || normalized(row.name).includes(needle) || normalized(row.key).includes(needle)))
17
+ .sort((a, b) => String(a.name ?? '').localeCompare(String(b.name ?? '')) || String(a.id).localeCompare(String(b.id)));
18
+ };
19
+ //# sourceMappingURL=project-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-list.js","sourceRoot":"","sources":["../../../../../../../../packages/ketsuite/src/modules/flow/queries/project-list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAQ,EAAE,IAA6B,EAAkB,EAAE;IAChG,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAA;IAC1C,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAClD,MAAM,UAAU,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACtE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAC9B,cAAc,EACd,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CACvG,CAAA;IACD,OAAO,IAAI;SACR,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CACN,CAAC,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAC7F;SACA,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACvG,CAAA;AACL,CAAC,CAAA"}