@ketvietlab/ketsuite 0.1.29 → 0.1.30
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.
- package/dist/cli.js +1 -1
- package/dist/modules/account_backend/index.js +0 -6
- package/dist/modules/account_backend/index.js.map +1 -1
- package/dist/modules/account_backend/screens/account-defaults.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/account-defaults.js +1 -1
- package/dist/modules/account_backend/screens/account-defaults.js.map +1 -1
- package/dist/modules/account_backend/screens/account-form.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/account-form.js +3 -1
- package/dist/modules/account_backend/screens/account-form.js.map +1 -1
- package/dist/modules/account_backend/screens/accounts-list.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/accounts-list.js +1 -1
- package/dist/modules/account_backend/screens/accounts-list.js.map +1 -1
- package/dist/modules/account_backend/screens/customer-invoice-form.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/customer-invoice-form.js +1 -1
- package/dist/modules/account_backend/screens/customer-invoice-form.js.map +1 -1
- package/dist/modules/account_backend/screens/customer-invoices-list.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/customer-invoices-list.js +1 -1
- package/dist/modules/account_backend/screens/customer-invoices-list.js.map +1 -1
- package/dist/modules/account_backend/screens/journal-entries-list.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/journal-entries-list.js +1 -1
- package/dist/modules/account_backend/screens/journal-entries-list.js.map +1 -1
- package/dist/modules/account_backend/screens/journal-entry-create.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/journal-entry-create.js +1 -1
- package/dist/modules/account_backend/screens/journal-entry-create.js.map +1 -1
- package/dist/modules/account_backend/screens/journal-form.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/journal-form.js +3 -3
- package/dist/modules/account_backend/screens/journal-form.js.map +1 -1
- package/dist/modules/account_backend/screens/journals-list.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/journals-list.js +1 -1
- package/dist/modules/account_backend/screens/journals-list.js.map +1 -1
- package/dist/modules/account_backend/screens/move-detail.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/move-detail.js +3 -1
- package/dist/modules/account_backend/screens/move-detail.js.map +1 -1
- package/dist/modules/account_backend/screens/opening-balances.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/opening-balances.js +2 -2
- package/dist/modules/account_backend/screens/opening-balances.js.map +1 -1
- package/dist/modules/account_backend/screens/overview.js +4 -2
- package/dist/modules/account_backend/screens/overview.js.map +1 -1
- package/dist/modules/account_backend/screens/payment-form.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/payment-form.js +1 -1
- package/dist/modules/account_backend/screens/payment-form.js.map +1 -1
- package/dist/modules/account_backend/screens/payment-term-form.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/payment-term-form.js +4 -2
- package/dist/modules/account_backend/screens/payment-term-form.js.map +1 -1
- package/dist/modules/account_backend/screens/payment-terms-list.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/payment-terms-list.js +1 -1
- package/dist/modules/account_backend/screens/payment-terms-list.js.map +1 -1
- package/dist/modules/account_backend/screens/payments-list.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/payments-list.js +1 -1
- package/dist/modules/account_backend/screens/payments-list.js.map +1 -1
- package/dist/modules/account_backend/screens/period-closes.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/period-closes.js +1 -1
- package/dist/modules/account_backend/screens/period-closes.js.map +1 -1
- package/dist/modules/account_backend/screens/tax-form.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/tax-form.js +3 -1
- package/dist/modules/account_backend/screens/tax-form.js.map +1 -1
- package/dist/modules/account_backend/screens/taxes-list.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/taxes-list.js +1 -1
- package/dist/modules/account_backend/screens/taxes-list.js.map +1 -1
- package/dist/modules/account_backend/screens/vendor-bill-form.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/vendor-bill-form.js +1 -1
- package/dist/modules/account_backend/screens/vendor-bill-form.js.map +1 -1
- package/dist/modules/account_backend/screens/vendor-bills-list.d.ts.map +1 -1
- package/dist/modules/account_backend/screens/vendor-bills-list.js +1 -1
- package/dist/modules/account_backend/screens/vendor-bills-list.js.map +1 -1
- package/dist/modules/account_partner_backend/screens/accounting-terms.d.ts.map +1 -1
- package/dist/modules/account_partner_backend/screens/accounting-terms.js +1 -1
- package/dist/modules/account_partner_backend/screens/accounting-terms.js.map +1 -1
- package/dist/modules/activity_backend/index.d.ts.map +1 -1
- package/dist/modules/activity_backend/index.js +0 -2
- package/dist/modules/activity_backend/index.js.map +1 -1
- package/dist/modules/activity_backend/screens/activities-list.d.ts.map +1 -1
- package/dist/modules/activity_backend/screens/activities-list.js +1 -1
- package/dist/modules/activity_backend/screens/activities-list.js.map +1 -1
- package/dist/modules/address_backend/index.d.ts.map +1 -1
- package/dist/modules/address_backend/index.js +0 -2
- package/dist/modules/address_backend/index.js.map +1 -1
- package/dist/modules/address_backend/screens/catalogs-list.d.ts.map +1 -1
- package/dist/modules/address_backend/screens/catalogs-list.js +1 -1
- package/dist/modules/address_backend/screens/catalogs-list.js.map +1 -1
- package/dist/modules/attendance_backend/screens/credentials.d.ts.map +1 -1
- package/dist/modules/attendance_backend/screens/credentials.js +1 -1
- package/dist/modules/attendance_backend/screens/credentials.js.map +1 -1
- package/dist/modules/attendance_backend/screens/period.d.ts.map +1 -1
- package/dist/modules/attendance_backend/screens/period.js +1 -1
- package/dist/modules/attendance_backend/screens/period.js.map +1 -1
- package/dist/modules/backend/current-company.d.ts +4 -0
- package/dist/modules/backend/current-company.d.ts.map +1 -0
- package/dist/modules/backend/current-company.js +27 -0
- package/dist/modules/backend/current-company.js.map +1 -0
- package/dist/modules/backend/design/client/backend-shell.d.mts +2 -2
- package/dist/modules/backend/design/client/backend-shell.d.mts.map +1 -1
- package/dist/modules/backend/design/client/backend-shell.mjs +1 -1
- package/dist/modules/backend/design/client/backend-shell.mjs.map +4 -4
- package/dist/modules/backend/design/client/ket-table.d.mts +2 -2
- package/dist/modules/backend/design/client/ket-table.d.mts.map +1 -1
- package/dist/modules/backend/design/client/ket-table.mjs +1 -1
- package/dist/modules/backend/design/client/ket-table.mjs.map +3 -3
- package/dist/modules/backend/design/client/search-filter.d.mts +2 -2
- package/dist/modules/backend/design/client/search-filter.d.mts.map +1 -1
- package/dist/modules/backend/design/client/search-filter.mjs +1 -1
- package/dist/modules/backend/design/client/search-filter.mjs.map +3 -3
- package/dist/modules/backend/design/forms.css +31 -0
- package/dist/modules/backend/index.d.ts +1 -0
- package/dist/modules/backend/index.d.ts.map +1 -1
- package/dist/modules/backend/index.js +1 -0
- package/dist/modules/backend/index.js.map +1 -1
- package/dist/modules/backend/optional-read.d.ts +4 -0
- package/dist/modules/backend/optional-read.d.ts.map +1 -0
- package/dist/modules/backend/optional-read.js +7 -0
- package/dist/modules/backend/optional-read.js.map +1 -0
- package/dist/modules/company_backend/index.d.ts.map +1 -1
- package/dist/modules/company_backend/index.js +0 -2
- package/dist/modules/company_backend/index.js.map +1 -1
- package/dist/modules/company_backend/screens/branch-form.d.ts.map +1 -1
- package/dist/modules/company_backend/screens/branch-form.js +3 -1
- package/dist/modules/company_backend/screens/branch-form.js.map +1 -1
- package/dist/modules/company_backend/screens/companies-list.d.ts.map +1 -1
- package/dist/modules/company_backend/screens/companies-list.js +1 -1
- package/dist/modules/company_backend/screens/companies-list.js.map +1 -1
- package/dist/modules/company_backend/screens/company-form.d.ts.map +1 -1
- package/dist/modules/company_backend/screens/company-form.js +1 -3
- package/dist/modules/company_backend/screens/company-form.js.map +1 -1
- package/dist/modules/company_backend/screens/context.d.ts.map +1 -1
- package/dist/modules/company_backend/screens/context.js +1 -1
- package/dist/modules/company_backend/screens/context.js.map +1 -1
- package/dist/modules/company_backend/screens/hierarchy.d.ts.map +1 -1
- package/dist/modules/company_backend/screens/hierarchy.js +1 -1
- package/dist/modules/company_backend/screens/hierarchy.js.map +1 -1
- package/dist/modules/crm_backend/client/crm-case-modal.d.mts +7 -7
- package/dist/modules/crm_backend/client/crm-case-modal.d.mts.map +1 -1
- package/dist/modules/crm_backend/client/crm-case-modal.mjs +1 -1
- package/dist/modules/crm_backend/client/crm-case-modal.mjs.map +3 -3
- package/dist/modules/crm_backend/client/crm-configuration-modal.d.mts +50 -50
- package/dist/modules/crm_backend/client/crm-configuration-modal.d.mts.map +1 -1
- package/dist/modules/crm_backend/client/crm-configuration-modal.mjs +1 -1
- package/dist/modules/crm_backend/client/crm-configuration-modal.mjs.map +3 -3
- package/dist/modules/crm_backend/messages.d.ts +0 -10
- package/dist/modules/crm_backend/messages.d.ts.map +1 -1
- package/dist/modules/crm_backend/messages.js +0 -10
- package/dist/modules/crm_backend/messages.js.map +1 -1
- package/dist/modules/crm_backend/screens/activity-planner.d.ts.map +1 -1
- package/dist/modules/crm_backend/screens/activity-planner.js +1 -1
- package/dist/modules/crm_backend/screens/activity-planner.js.map +1 -1
- package/dist/modules/crm_backend/screens/case-create.d.ts.map +1 -1
- package/dist/modules/crm_backend/screens/case-create.js +1 -1
- package/dist/modules/crm_backend/screens/case-create.js.map +1 -1
- package/dist/modules/crm_backend/screens/case-detail.d.ts.map +1 -1
- package/dist/modules/crm_backend/screens/case-detail.js +2 -2
- package/dist/modules/crm_backend/screens/case-detail.js.map +1 -1
- package/dist/modules/crm_backend/screens/cases-list.d.ts.map +1 -1
- package/dist/modules/crm_backend/screens/cases-list.js +1 -1
- package/dist/modules/crm_backend/screens/cases-list.js.map +1 -1
- package/dist/modules/crm_backend/screens/configuration.d.ts.map +1 -1
- package/dist/modules/crm_backend/screens/configuration.js +1 -1
- package/dist/modules/crm_backend/screens/configuration.js.map +1 -1
- package/dist/modules/crm_backend/screens/leaderboard.d.ts.map +1 -1
- package/dist/modules/crm_backend/screens/leaderboard.js +1 -1
- package/dist/modules/crm_backend/screens/leaderboard.js.map +1 -1
- package/dist/modules/crm_backend/screens/pipeline.d.ts.map +1 -1
- package/dist/modules/crm_backend/screens/pipeline.js +1 -1
- package/dist/modules/crm_backend/screens/pipeline.js.map +1 -1
- package/dist/modules/flow/domain/command-check.d.ts +3 -0
- package/dist/modules/flow/domain/command-check.d.ts.map +1 -0
- package/dist/modules/flow/domain/command-check.js +9 -0
- package/dist/modules/flow/domain/command-check.js.map +1 -0
- package/dist/modules/flow/domain/command.d.ts +33 -0
- package/dist/modules/flow/domain/command.d.ts.map +1 -0
- package/dist/modules/flow/domain/command.js +35 -0
- package/dist/modules/flow/domain/command.js.map +1 -0
- package/dist/modules/flow/domain/issue-bulk.d.ts +50 -0
- package/dist/modules/flow/domain/issue-bulk.d.ts.map +1 -0
- package/dist/modules/flow/domain/issue-bulk.js +97 -0
- package/dist/modules/flow/domain/issue-bulk.js.map +1 -0
- package/dist/modules/flow/domain/issue-dependency.d.ts +19 -0
- package/dist/modules/flow/domain/issue-dependency.d.ts.map +1 -0
- package/dist/modules/flow/domain/issue-dependency.js +59 -0
- package/dist/modules/flow/domain/issue-dependency.js.map +1 -0
- package/dist/modules/flow/domain/issue-discussion.d.ts +52 -0
- package/dist/modules/flow/domain/issue-discussion.d.ts.map +1 -0
- package/dist/modules/flow/domain/issue-discussion.js +114 -0
- package/dist/modules/flow/domain/issue-discussion.js.map +1 -0
- package/dist/modules/flow/domain/issue-transfer.d.ts +62 -0
- package/dist/modules/flow/domain/issue-transfer.d.ts.map +1 -0
- package/dist/modules/flow/domain/issue-transfer.js +171 -0
- package/dist/modules/flow/domain/issue-transfer.js.map +1 -0
- package/dist/modules/flow/domain/issue-validation.d.ts +68 -0
- package/dist/modules/flow/domain/issue-validation.d.ts.map +1 -0
- package/dist/modules/flow/domain/issue-validation.js +136 -0
- package/dist/modules/flow/domain/issue-validation.js.map +1 -0
- package/dist/modules/flow/domain/issue-write.d.ts +118 -0
- package/dist/modules/flow/domain/issue-write.d.ts.map +1 -0
- package/dist/modules/flow/domain/issue-write.js +372 -0
- package/dist/modules/flow/domain/issue-write.js.map +1 -0
- package/dist/modules/flow/domain/sprint-lifecycle.d.ts +61 -0
- package/dist/modules/flow/domain/sprint-lifecycle.d.ts.map +1 -0
- package/dist/modules/flow/domain/sprint-lifecycle.js +145 -0
- package/dist/modules/flow/domain/sprint-lifecycle.js.map +1 -0
- package/dist/modules/flow/functions/board.d.ts +7 -0
- package/dist/modules/flow/functions/board.d.ts.map +1 -0
- package/dist/modules/flow/functions/board.js +59 -0
- package/dist/modules/flow/functions/board.js.map +1 -0
- package/dist/modules/flow/functions/column.d.ts +8 -0
- package/dist/modules/flow/functions/column.d.ts.map +1 -0
- package/dist/modules/flow/functions/column.js +64 -0
- package/dist/modules/flow/functions/column.js.map +1 -0
- package/dist/modules/flow/functions/effects.d.ts +21 -0
- package/dist/modules/flow/functions/effects.d.ts.map +1 -0
- package/dist/modules/flow/functions/effects.js +96 -0
- package/dist/modules/flow/functions/effects.js.map +1 -0
- package/dist/modules/flow/functions/entity-save.d.ts +4 -0
- package/dist/modules/flow/functions/entity-save.d.ts.map +1 -0
- package/dist/modules/flow/functions/entity-save.js +60 -0
- package/dist/modules/flow/functions/entity-save.js.map +1 -0
- package/dist/modules/flow/functions/epic.d.ts +26 -0
- package/dist/modules/flow/functions/epic.d.ts.map +1 -0
- package/dist/modules/flow/functions/epic.js +151 -0
- package/dist/modules/flow/functions/epic.js.map +1 -0
- package/dist/modules/flow/functions/field.d.ts +9 -0
- package/dist/modules/flow/functions/field.d.ts.map +1 -0
- package/dist/modules/flow/functions/field.js +117 -0
- package/dist/modules/flow/functions/field.js.map +1 -0
- package/dist/modules/flow/functions/index.d.ts +5 -0
- package/dist/modules/flow/functions/index.d.ts.map +1 -0
- package/dist/modules/flow/functions/index.js +42 -0
- package/dist/modules/flow/functions/index.js.map +1 -0
- package/dist/modules/flow/functions/issue-batch.d.ts +6 -0
- package/dist/modules/flow/functions/issue-batch.d.ts.map +1 -0
- package/dist/modules/flow/functions/issue-batch.js +149 -0
- package/dist/modules/flow/functions/issue-batch.js.map +1 -0
- package/dist/modules/flow/functions/issue-dependency.d.ts +8 -0
- package/dist/modules/flow/functions/issue-dependency.d.ts.map +1 -0
- package/dist/modules/flow/functions/issue-dependency.js +54 -0
- package/dist/modules/flow/functions/issue-dependency.js.map +1 -0
- package/dist/modules/flow/functions/issue-discussion.d.ts +6 -0
- package/dist/modules/flow/functions/issue-discussion.d.ts.map +1 -0
- package/dist/modules/flow/functions/issue-discussion.js +86 -0
- package/dist/modules/flow/functions/issue-discussion.js.map +1 -0
- package/dist/modules/flow/functions/issue-read.d.ts +18 -0
- package/dist/modules/flow/functions/issue-read.d.ts.map +1 -0
- package/dist/modules/flow/functions/issue-read.js +159 -0
- package/dist/modules/flow/functions/issue-read.js.map +1 -0
- package/dist/modules/flow/functions/issue-write.d.ts +9 -0
- package/dist/modules/flow/functions/issue-write.d.ts.map +1 -0
- package/dist/modules/flow/functions/issue-write.js +149 -0
- package/dist/modules/flow/functions/issue-write.js.map +1 -0
- package/dist/modules/flow/functions/issueType.d.ts +8 -0
- package/dist/modules/flow/functions/issueType.d.ts.map +1 -0
- package/dist/modules/flow/functions/issueType.js +66 -0
- package/dist/modules/flow/functions/issueType.js.map +1 -0
- package/dist/modules/flow/functions/page.d.ts +22 -0
- package/dist/modules/flow/functions/page.d.ts.map +1 -0
- package/dist/modules/flow/functions/page.js +202 -0
- package/dist/modules/flow/functions/page.js.map +1 -0
- package/dist/modules/flow/functions/project.d.ts +26 -0
- package/dist/modules/flow/functions/project.d.ts.map +1 -0
- package/dist/modules/flow/functions/project.js +381 -0
- package/dist/modules/flow/functions/project.js.map +1 -0
- package/dist/modules/flow/functions/sprint.d.ts +17 -0
- package/dist/modules/flow/functions/sprint.d.ts.map +1 -0
- package/dist/modules/flow/functions/sprint.js +173 -0
- package/dist/modules/flow/functions/sprint.js.map +1 -0
- package/dist/modules/flow/functions/tag.d.ts +14 -0
- package/dist/modules/flow/functions/tag.d.ts.map +1 -0
- package/dist/modules/flow/functions/tag.js +88 -0
- package/dist/modules/flow/functions/tag.js.map +1 -0
- package/dist/modules/flow/index.d.ts +8 -2
- package/dist/modules/flow/index.d.ts.map +1 -1
- package/dist/modules/flow/index.js +7 -2
- package/dist/modules/flow/index.js.map +1 -1
- package/dist/modules/flow/pages.d.ts +1 -1
- package/dist/modules/flow/pages.d.ts.map +1 -1
- package/dist/modules/flow/pages.js +1 -1
- package/dist/modules/flow/pages.js.map +1 -1
- package/dist/modules/flow/queries/calendar.d.ts +21 -0
- package/dist/modules/flow/queries/calendar.d.ts.map +1 -0
- package/dist/modules/flow/queries/calendar.js +31 -0
- package/dist/modules/flow/queries/calendar.js.map +1 -0
- package/dist/modules/flow/queries/issue-dependencies.d.ts +17 -0
- package/dist/modules/flow/queries/issue-dependencies.d.ts.map +1 -0
- package/dist/modules/flow/queries/issue-dependencies.js +46 -0
- package/dist/modules/flow/queries/issue-dependencies.js.map +1 -0
- package/dist/modules/flow/queries/issue-followers.d.ts +6 -0
- package/dist/modules/flow/queries/issue-followers.d.ts.map +1 -0
- package/dist/modules/flow/queries/issue-followers.js +18 -0
- package/dist/modules/flow/queries/issue-followers.js.map +1 -0
- package/dist/modules/flow/queries/issue-list.d.ts +153 -0
- package/dist/modules/flow/queries/issue-list.d.ts.map +1 -0
- package/dist/modules/flow/queries/issue-list.js +439 -0
- package/dist/modules/flow/queries/issue-list.js.map +1 -0
- package/dist/modules/flow/queries/options.d.ts +4 -0
- package/dist/modules/flow/queries/options.d.ts.map +1 -0
- package/dist/modules/flow/queries/options.js +13 -0
- package/dist/modules/flow/queries/options.js.map +1 -0
- package/dist/modules/flow/queries/progress.d.ts +24 -0
- package/dist/modules/flow/queries/progress.d.ts.map +1 -0
- package/dist/modules/flow/queries/progress.js +54 -0
- package/dist/modules/flow/queries/progress.js.map +1 -0
- package/dist/modules/flow/queries/project-list.d.ts +4 -0
- package/dist/modules/flow/queries/project-list.d.ts.map +1 -0
- package/dist/modules/flow/queries/project-list.js +19 -0
- package/dist/modules/flow/queries/project-list.js.map +1 -0
- package/dist/modules/flow_backend/messages.d.ts +1 -2
- package/dist/modules/flow_backend/messages.d.ts.map +1 -1
- package/dist/modules/flow_backend/messages.js +0 -2
- package/dist/modules/flow_backend/messages.js.map +1 -1
- package/dist/modules/flow_backend/routes.js +1 -1
- package/dist/modules/flow_backend/routes.js.map +1 -1
- package/dist/modules/flow_backend/screens/all-epics.d.ts.map +1 -1
- package/dist/modules/flow_backend/screens/all-epics.js +1 -1
- package/dist/modules/flow_backend/screens/all-epics.js.map +1 -1
- package/dist/modules/flow_backend/screens/all-pages.d.ts.map +1 -1
- package/dist/modules/flow_backend/screens/all-pages.js +1 -1
- package/dist/modules/flow_backend/screens/all-pages.js.map +1 -1
- package/dist/modules/flow_backend/screens/epic-detail.js +1 -1
- package/dist/modules/flow_backend/screens/epic-detail.js.map +1 -1
- package/dist/modules/flow_backend/screens/gantt.d.ts.map +1 -1
- package/dist/modules/flow_backend/screens/gantt.js +1 -1
- package/dist/modules/flow_backend/screens/gantt.js.map +1 -1
- package/dist/modules/flow_backend/screens/issue-detail.js +2 -1
- package/dist/modules/flow_backend/screens/issue-detail.js.map +1 -1
- package/dist/modules/flow_backend/screens/issues.d.ts.map +1 -1
- package/dist/modules/flow_backend/screens/issues.js +1 -1
- package/dist/modules/flow_backend/screens/issues.js.map +1 -1
- package/dist/modules/flow_backend/screens/map.js +1 -1
- package/dist/modules/flow_backend/screens/map.js.map +1 -1
- package/dist/modules/flow_backend/screens/my-work.d.ts.map +1 -1
- package/dist/modules/flow_backend/screens/my-work.js +1 -1
- package/dist/modules/flow_backend/screens/my-work.js.map +1 -1
- package/dist/modules/flow_backend/screens/page-detail.js +1 -1
- package/dist/modules/flow_backend/screens/page-detail.js.map +1 -1
- package/dist/modules/flow_backend/screens/project-create.d.ts.map +1 -1
- package/dist/modules/flow_backend/screens/project-create.js +1 -1
- package/dist/modules/flow_backend/screens/project-create.js.map +1 -1
- package/dist/modules/flow_backend/screens/project-pages.d.ts.map +1 -1
- package/dist/modules/flow_backend/screens/project-pages.js +1 -1
- package/dist/modules/flow_backend/screens/project-pages.js.map +1 -1
- package/dist/modules/flow_backend/screens/projects-list.d.ts.map +1 -1
- package/dist/modules/flow_backend/screens/projects-list.js +1 -1
- package/dist/modules/flow_backend/screens/projects-list.js.map +1 -1
- package/dist/modules/flow_backend/screens/sprints.d.ts.map +1 -1
- package/dist/modules/flow_backend/screens/sprints.js +1 -1
- package/dist/modules/flow_backend/screens/sprints.js.map +1 -1
- package/dist/modules/flow_staff_channel/channel-routes.js +1 -1
- package/dist/modules/flow_staff_channel/channel-routes.js.map +1 -1
- package/dist/modules/hospitality_billing/messages.d.ts.map +1 -1
- package/dist/modules/hospitality_billing/messages.js +0 -2
- package/dist/modules/hospitality_billing/messages.js.map +1 -1
- package/dist/modules/hospitality_billing/screens/billing.d.ts.map +1 -1
- package/dist/modules/hospitality_billing/screens/billing.js +1 -1
- package/dist/modules/hospitality_billing/screens/billing.js.map +1 -1
- package/dist/modules/hospitality_billing/screens/page-frame.d.ts +1 -2
- package/dist/modules/hospitality_billing/screens/page-frame.d.ts.map +1 -1
- package/dist/modules/hospitality_billing/screens/page-frame.js +1 -1
- package/dist/modules/hospitality_billing/screens/page-frame.js.map +1 -1
- package/dist/modules/hospitality_core/messages.js +2 -2
- package/dist/modules/hospitality_core/messages.js.map +1 -1
- package/dist/modules/hospitality_core/screens/check-out-prep.d.ts.map +1 -1
- package/dist/modules/hospitality_core/screens/check-out-prep.js +1 -1
- package/dist/modules/hospitality_core/screens/check-out-prep.js.map +1 -1
- package/dist/modules/hospitality_core/screens/front-desk.d.ts.map +1 -1
- package/dist/modules/hospitality_core/screens/front-desk.js +40 -40
- package/dist/modules/hospitality_core/screens/front-desk.js.map +1 -1
- package/dist/modules/hospitality_core/screens/page-frame.d.ts +2 -3
- package/dist/modules/hospitality_core/screens/page-frame.d.ts.map +1 -1
- package/dist/modules/hospitality_core/screens/page-frame.js +3 -3
- package/dist/modules/hospitality_core/screens/page-frame.js.map +1 -1
- package/dist/modules/hospitality_core/screens/tape-chart.d.ts.map +1 -1
- package/dist/modules/hospitality_core/screens/tape-chart.js +3 -12
- package/dist/modules/hospitality_core/screens/tape-chart.js.map +1 -1
- package/dist/modules/hr_backend/screens/employee-form.d.ts.map +1 -1
- package/dist/modules/hr_backend/screens/employee-form.js +1 -1
- package/dist/modules/hr_backend/screens/employee-form.js.map +1 -1
- package/dist/modules/hr_backend/screens/leaves-list.d.ts.map +1 -1
- package/dist/modules/hr_backend/screens/leaves-list.js +1 -1
- package/dist/modules/hr_backend/screens/leaves-list.js.map +1 -1
- package/dist/modules/livedoc/islands.d.ts +9 -0
- package/dist/modules/livedoc/islands.d.ts.map +1 -1
- package/dist/modules/loyalty_backend/messages.d.ts +0 -10
- package/dist/modules/loyalty_backend/messages.d.ts.map +1 -1
- package/dist/modules/loyalty_backend/messages.js +0 -10
- package/dist/modules/loyalty_backend/messages.js.map +1 -1
- package/dist/modules/loyalty_backend/screens/index.d.ts.map +1 -1
- package/dist/modules/loyalty_backend/screens/index.js +5 -5
- package/dist/modules/loyalty_backend/screens/index.js.map +1 -1
- package/dist/modules/loyalty_backend/screens/page-frame.d.ts +2 -3
- package/dist/modules/loyalty_backend/screens/page-frame.d.ts.map +1 -1
- package/dist/modules/loyalty_backend/screens/page-frame.js +2 -2
- package/dist/modules/loyalty_backend/screens/page-frame.js.map +1 -1
- package/dist/modules/mail_backend/index.d.ts.map +1 -1
- package/dist/modules/mail_backend/index.js +0 -2
- package/dist/modules/mail_backend/index.js.map +1 -1
- package/dist/modules/mail_backend/screens/inbox-list.d.ts.map +1 -1
- package/dist/modules/mail_backend/screens/inbox-list.js +1 -1
- package/dist/modules/mail_backend/screens/inbox-list.js.map +1 -1
- package/dist/modules/mail_inbound_backend/index.d.ts.map +1 -1
- package/dist/modules/mail_inbound_backend/index.js +0 -2
- package/dist/modules/mail_inbound_backend/index.js.map +1 -1
- package/dist/modules/mail_inbound_backend/screens/inbound-list.d.ts.map +1 -1
- package/dist/modules/mail_inbound_backend/screens/inbound-list.js +1 -1
- package/dist/modules/mail_inbound_backend/screens/inbound-list.js.map +1 -1
- package/dist/modules/mail_transport_backend/index.d.ts.map +1 -1
- package/dist/modules/mail_transport_backend/index.js +0 -2
- package/dist/modules/mail_transport_backend/index.js.map +1 -1
- package/dist/modules/mail_transport_backend/screens/outbox-list.d.ts.map +1 -1
- package/dist/modules/mail_transport_backend/screens/outbox-list.js +1 -1
- package/dist/modules/mail_transport_backend/screens/outbox-list.js.map +1 -1
- package/dist/modules/manufacturing_backend/screens/order-execution.d.ts.map +1 -1
- package/dist/modules/manufacturing_backend/screens/order-execution.js +1 -1
- package/dist/modules/manufacturing_backend/screens/order-execution.js.map +1 -1
- package/dist/modules/oauth_backend/messages.d.ts +0 -4
- package/dist/modules/oauth_backend/messages.d.ts.map +1 -1
- package/dist/modules/oauth_backend/messages.js +0 -4
- package/dist/modules/oauth_backend/messages.js.map +1 -1
- package/dist/modules/oauth_backend/screens/index.d.ts.map +1 -1
- package/dist/modules/oauth_backend/screens/index.js +5 -5
- package/dist/modules/oauth_backend/screens/index.js.map +1 -1
- package/dist/modules/partner_backend/screens/form.d.ts.map +1 -1
- package/dist/modules/partner_backend/screens/form.js +3 -1
- package/dist/modules/partner_backend/screens/form.js.map +1 -1
- package/dist/modules/partner_backend/screens/list.d.ts.map +1 -1
- package/dist/modules/partner_backend/screens/list.js +1 -1
- package/dist/modules/partner_backend/screens/list.js.map +1 -1
- package/dist/modules/partner_backend/screens/new.d.ts.map +1 -1
- package/dist/modules/partner_backend/screens/new.js +1 -1
- package/dist/modules/partner_backend/screens/new.js.map +1 -1
- package/dist/modules/pricing_backend/index.js +0 -2
- package/dist/modules/pricing_backend/index.js.map +1 -1
- package/dist/modules/pricing_backend/screens/pricelist-detail.d.ts.map +1 -1
- package/dist/modules/pricing_backend/screens/pricelist-detail.js +1 -1
- package/dist/modules/pricing_backend/screens/pricelist-detail.js.map +1 -1
- package/dist/modules/pricing_backend/screens/pricelists-list.d.ts.map +1 -1
- package/dist/modules/pricing_backend/screens/pricelists-list.js +1 -1
- package/dist/modules/pricing_backend/screens/pricelists-list.js.map +1 -1
- package/dist/modules/product_backend/client/attribute-modal.d.mts +4 -4
- package/dist/modules/product_backend/client/attribute-modal.d.mts.map +1 -1
- package/dist/modules/product_backend/client/attribute-modal.mjs +1 -1
- package/dist/modules/product_backend/client/attribute-modal.mjs.map +3 -3
- package/dist/modules/product_backend/client/product-modal.d.mts +8 -8
- package/dist/modules/product_backend/client/product-modal.d.mts.map +1 -1
- package/dist/modules/product_backend/client/product-modal.mjs +1 -1
- package/dist/modules/product_backend/client/product-modal.mjs.map +3 -3
- package/dist/modules/product_backend/client/variant-editor.d.mts +3 -3
- package/dist/modules/product_backend/client/variant-editor.d.mts.map +1 -1
- package/dist/modules/product_backend/client/variant-editor.mjs +1 -1
- package/dist/modules/product_backend/client/variant-editor.mjs.map +3 -3
- package/dist/modules/product_backend/screens/detail.d.ts.map +1 -1
- package/dist/modules/product_backend/screens/detail.js +3 -2
- package/dist/modules/product_backend/screens/detail.js.map +1 -1
- package/dist/modules/product_backend/screens/variant.d.ts.map +1 -1
- package/dist/modules/product_backend/screens/variant.js +3 -2
- package/dist/modules/product_backend/screens/variant.js.map +1 -1
- package/dist/modules/purchase_backend/client/purchase-order-modal.d.mts +185 -0
- package/dist/modules/purchase_backend/client/purchase-order-modal.d.mts.map +1 -0
- package/dist/modules/purchase_backend/client/purchase-order-modal.mjs +2 -0
- package/dist/modules/purchase_backend/client/purchase-order-modal.mjs.map +7 -0
- package/dist/modules/purchase_backend/client/vendor-pricelist-modal.d.mts +52 -0
- package/dist/modules/purchase_backend/client/vendor-pricelist-modal.d.mts.map +1 -0
- package/dist/modules/purchase_backend/client/vendor-pricelist-modal.mjs +2 -0
- package/dist/modules/purchase_backend/client/vendor-pricelist-modal.mjs.map +7 -0
- package/dist/modules/purchase_backend/index.js +83 -14
- package/dist/modules/purchase_backend/index.js.map +1 -1
- package/dist/modules/purchase_backend/modal/context.d.ts +4 -0
- package/dist/modules/purchase_backend/modal/context.d.ts.map +1 -0
- package/dist/modules/purchase_backend/modal/context.js +94 -0
- package/dist/modules/purchase_backend/modal/context.js.map +1 -0
- package/dist/modules/purchase_backend/modal/order-modal-view.d.ts +18 -0
- package/dist/modules/purchase_backend/modal/order-modal-view.d.ts.map +1 -0
- package/dist/modules/purchase_backend/modal/order-modal-view.js +290 -0
- package/dist/modules/purchase_backend/modal/order-modal-view.js.map +1 -0
- package/dist/modules/purchase_backend/modal/pricelist-context.d.ts +3 -0
- package/dist/modules/purchase_backend/modal/pricelist-context.d.ts.map +1 -0
- package/dist/modules/purchase_backend/modal/pricelist-context.js +36 -0
- package/dist/modules/purchase_backend/modal/pricelist-context.js.map +1 -0
- package/dist/modules/purchase_backend/modal/pricelist-view.d.ts +12 -0
- package/dist/modules/purchase_backend/modal/pricelist-view.d.ts.map +1 -0
- package/dist/modules/purchase_backend/modal/pricelist-view.js +78 -0
- package/dist/modules/purchase_backend/modal/pricelist-view.js.map +1 -0
- package/dist/modules/purchase_backend/screens/order-detail.d.ts.map +1 -1
- package/dist/modules/purchase_backend/screens/order-detail.js +4 -2
- package/dist/modules/purchase_backend/screens/order-detail.js.map +1 -1
- package/dist/modules/purchase_backend/screens/overview.d.ts +5 -0
- package/dist/modules/purchase_backend/screens/overview.d.ts.map +1 -1
- package/dist/modules/purchase_backend/screens/overview.js +27 -6
- package/dist/modules/purchase_backend/screens/overview.js.map +1 -1
- package/dist/modules/purchase_backend/screens/rfq-create.d.ts.map +1 -1
- package/dist/modules/purchase_backend/screens/rfq-create.js +1 -1
- package/dist/modules/purchase_backend/screens/rfq-create.js.map +1 -1
- package/dist/modules/purchase_backend/screens/rfqs-list.d.ts +1 -1
- package/dist/modules/purchase_backend/screens/rfqs-list.d.ts.map +1 -1
- package/dist/modules/purchase_backend/screens/rfqs-list.js +1 -1
- package/dist/modules/purchase_backend/screens/rfqs-list.js.map +1 -1
- package/dist/modules/purchase_backend/screens/vendor-pricelist-create.d.ts.map +1 -1
- package/dist/modules/purchase_backend/screens/vendor-pricelist-create.js +1 -1
- package/dist/modules/purchase_backend/screens/vendor-pricelist-create.js.map +1 -1
- package/dist/modules/purchase_backend/screens/vendor-pricelists-list.d.ts +2 -1
- package/dist/modules/purchase_backend/screens/vendor-pricelists-list.d.ts.map +1 -1
- package/dist/modules/purchase_backend/screens/vendor-pricelists-list.js +2 -2
- package/dist/modules/purchase_backend/screens/vendor-pricelists-list.js.map +1 -1
- package/dist/modules/purchase_backend/search.d.ts +1 -1
- package/dist/modules/sale/functions/line-edit.d.ts +4 -0
- package/dist/modules/sale/functions/line-edit.d.ts.map +1 -0
- package/dist/modules/sale/functions/line-edit.js +120 -0
- package/dist/modules/sale/functions/line-edit.js.map +1 -0
- package/dist/modules/sale/index.d.ts.map +1 -1
- package/dist/modules/sale/index.js +16 -1
- package/dist/modules/sale/index.js.map +1 -1
- package/dist/modules/sale_backend/client/invoicing-policy-modal.d.mts +53 -0
- package/dist/modules/sale_backend/client/invoicing-policy-modal.d.mts.map +1 -0
- package/dist/modules/sale_backend/client/invoicing-policy-modal.mjs +2 -0
- package/dist/modules/sale_backend/client/invoicing-policy-modal.mjs.map +7 -0
- package/dist/modules/sale_backend/client/sale-order-modal.d.mts +161 -0
- package/dist/modules/sale_backend/client/sale-order-modal.d.mts.map +1 -0
- package/dist/modules/sale_backend/client/sale-order-modal.mjs +2 -0
- package/dist/modules/sale_backend/client/sale-order-modal.mjs.map +7 -0
- package/dist/modules/sale_backend/index.js +81 -20
- package/dist/modules/sale_backend/index.js.map +1 -1
- package/dist/modules/sale_backend/modal/context.d.ts +4 -0
- package/dist/modules/sale_backend/modal/context.d.ts.map +1 -0
- package/dist/modules/sale_backend/modal/context.js +94 -0
- package/dist/modules/sale_backend/modal/context.js.map +1 -0
- package/dist/modules/sale_backend/modal/order-modal-view.d.ts +18 -0
- package/dist/modules/sale_backend/modal/order-modal-view.d.ts.map +1 -0
- package/dist/modules/sale_backend/modal/order-modal-view.js +289 -0
- package/dist/modules/sale_backend/modal/order-modal-view.js.map +1 -0
- package/dist/modules/sale_backend/modal/policy-context.d.ts +3 -0
- package/dist/modules/sale_backend/modal/policy-context.d.ts.map +1 -0
- package/dist/modules/sale_backend/modal/policy-context.js +26 -0
- package/dist/modules/sale_backend/modal/policy-context.js.map +1 -0
- package/dist/modules/sale_backend/modal/policy-view.d.ts +11 -0
- package/dist/modules/sale_backend/modal/policy-view.d.ts.map +1 -0
- package/dist/modules/sale_backend/modal/policy-view.js +70 -0
- package/dist/modules/sale_backend/modal/policy-view.js.map +1 -0
- package/dist/modules/sale_backend/screens/invoicing-policies-list.d.ts +1 -1
- package/dist/modules/sale_backend/screens/invoicing-policies-list.d.ts.map +1 -1
- package/dist/modules/sale_backend/screens/invoicing-policies-list.js +1 -1
- package/dist/modules/sale_backend/screens/invoicing-policies-list.js.map +1 -1
- package/dist/modules/sale_backend/screens/invoicing-policy-create.d.ts.map +1 -1
- package/dist/modules/sale_backend/screens/invoicing-policy-create.js +1 -1
- package/dist/modules/sale_backend/screens/invoicing-policy-create.js.map +1 -1
- package/dist/modules/sale_backend/screens/order-detail.d.ts.map +1 -1
- package/dist/modules/sale_backend/screens/order-detail.js +3 -1
- package/dist/modules/sale_backend/screens/order-detail.js.map +1 -1
- package/dist/modules/sale_backend/screens/overview.d.ts +3 -0
- package/dist/modules/sale_backend/screens/overview.d.ts.map +1 -1
- package/dist/modules/sale_backend/screens/overview.js +22 -14
- package/dist/modules/sale_backend/screens/overview.js.map +1 -1
- package/dist/modules/sale_backend/screens/quotation-create.d.ts.map +1 -1
- package/dist/modules/sale_backend/screens/quotation-create.js +1 -1
- package/dist/modules/sale_backend/screens/quotation-create.js.map +1 -1
- package/dist/modules/sale_backend/screens/quotations-list.d.ts +1 -1
- package/dist/modules/sale_backend/screens/quotations-list.d.ts.map +1 -1
- package/dist/modules/sale_backend/screens/quotations-list.js +1 -1
- package/dist/modules/sale_backend/screens/quotations-list.js.map +1 -1
- package/dist/modules/sale_backend/screens/sales-orders-list.d.ts.map +1 -1
- package/dist/modules/sale_backend/screens/sales-orders-list.js +1 -1
- package/dist/modules/sale_backend/screens/sales-orders-list.js.map +1 -1
- package/dist/modules/stock/functions/inventory-preview.d.ts +4 -0
- package/dist/modules/stock/functions/inventory-preview.d.ts.map +1 -0
- package/dist/modules/stock/functions/inventory-preview.js +68 -0
- package/dist/modules/stock/functions/inventory-preview.js.map +1 -0
- package/dist/modules/stock/index.d.ts.map +1 -1
- package/dist/modules/stock/index.js +14 -1
- package/dist/modules/stock/index.js.map +1 -1
- package/dist/modules/stock_backend/client/inventory-count-modal.d.mts +60 -0
- package/dist/modules/stock_backend/client/inventory-count-modal.d.mts.map +1 -0
- package/dist/modules/stock_backend/client/inventory-count-modal.mjs +2 -0
- package/dist/modules/stock_backend/client/inventory-count-modal.mjs.map +7 -0
- package/dist/modules/stock_backend/client/stock-configuration-modal.d.mts +105 -0
- package/dist/modules/stock_backend/client/stock-configuration-modal.d.mts.map +1 -0
- package/dist/modules/stock_backend/client/stock-configuration-modal.mjs +2 -0
- package/dist/modules/stock_backend/client/stock-configuration-modal.mjs.map +7 -0
- package/dist/modules/stock_backend/client/stock-transfer-modal.d.mts +130 -0
- package/dist/modules/stock_backend/client/stock-transfer-modal.d.mts.map +1 -0
- package/dist/modules/stock_backend/client/stock-transfer-modal.mjs +2 -0
- package/dist/modules/stock_backend/client/stock-transfer-modal.mjs.map +7 -0
- package/dist/modules/stock_backend/functions/index.d.ts +10 -0
- package/dist/modules/stock_backend/functions/index.d.ts.map +1 -0
- package/dist/modules/stock_backend/functions/index.js +20 -0
- package/dist/modules/stock_backend/functions/index.js.map +1 -0
- package/dist/modules/stock_backend/functions.d.ts +1 -9
- package/dist/modules/stock_backend/functions.d.ts.map +1 -1
- package/dist/modules/stock_backend/functions.js +1 -18
- package/dist/modules/stock_backend/functions.js.map +1 -1
- package/dist/modules/stock_backend/index.js +52 -0
- package/dist/modules/stock_backend/index.js.map +1 -1
- package/dist/modules/stock_backend/islands.d.ts +8 -0
- package/dist/modules/stock_backend/islands.d.ts.map +1 -1
- package/dist/modules/stock_backend/islands.js +41 -0
- package/dist/modules/stock_backend/islands.js.map +1 -1
- package/dist/modules/stock_backend/modal/configuration-context.d.ts +3 -0
- package/dist/modules/stock_backend/modal/configuration-context.d.ts.map +1 -0
- package/dist/modules/stock_backend/modal/configuration-context.js +65 -0
- package/dist/modules/stock_backend/modal/configuration-context.js.map +1 -0
- package/dist/modules/stock_backend/modal/configuration-view.d.ts +21 -0
- package/dist/modules/stock_backend/modal/configuration-view.d.ts.map +1 -0
- package/dist/modules/stock_backend/modal/configuration-view.js +201 -0
- package/dist/modules/stock_backend/modal/configuration-view.js.map +1 -0
- package/dist/modules/stock_backend/modal/configuration.d.ts +20 -0
- package/dist/modules/stock_backend/modal/configuration.d.ts.map +1 -0
- package/dist/modules/stock_backend/modal/configuration.js +117 -0
- package/dist/modules/stock_backend/modal/configuration.js.map +1 -0
- package/dist/modules/stock_backend/modal/inventory-context.d.ts +3 -0
- package/dist/modules/stock_backend/modal/inventory-context.d.ts.map +1 -0
- package/dist/modules/stock_backend/modal/inventory-context.js +37 -0
- package/dist/modules/stock_backend/modal/inventory-context.js.map +1 -0
- package/dist/modules/stock_backend/modal/inventory-view.d.ts +14 -0
- package/dist/modules/stock_backend/modal/inventory-view.d.ts.map +1 -0
- package/dist/modules/stock_backend/modal/inventory-view.js +142 -0
- package/dist/modules/stock_backend/modal/inventory-view.js.map +1 -0
- package/dist/modules/stock_backend/modal/transfer-context.d.ts +3 -0
- package/dist/modules/stock_backend/modal/transfer-context.d.ts.map +1 -0
- package/dist/modules/stock_backend/modal/transfer-context.js +54 -0
- package/dist/modules/stock_backend/modal/transfer-context.js.map +1 -0
- package/dist/modules/stock_backend/modal/transfer-view.d.ts +15 -0
- package/dist/modules/stock_backend/modal/transfer-view.d.ts.map +1 -0
- package/dist/modules/stock_backend/modal/transfer-view.js +252 -0
- package/dist/modules/stock_backend/modal/transfer-view.js.map +1 -0
- package/dist/modules/stock_backend/routes.d.ts.map +1 -1
- package/dist/modules/stock_backend/routes.js +117 -34
- package/dist/modules/stock_backend/routes.js.map +1 -1
- package/dist/modules/stock_backend/screens/forecast.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/forecast.js +5 -32
- package/dist/modules/stock_backend/screens/forecast.js.map +1 -1
- package/dist/modules/stock_backend/screens/inventory.d.ts +3 -1
- package/dist/modules/stock_backend/screens/inventory.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/inventory.js +27 -74
- package/dist/modules/stock_backend/screens/inventory.js.map +1 -1
- package/dist/modules/stock_backend/screens/location-create.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/location-create.js +1 -1
- package/dist/modules/stock_backend/screens/location-create.js.map +1 -1
- package/dist/modules/stock_backend/screens/locations-list.d.ts +1 -1
- package/dist/modules/stock_backend/screens/locations-list.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/locations-list.js +1 -1
- package/dist/modules/stock_backend/screens/locations-list.js.map +1 -1
- package/dist/modules/stock_backend/screens/lot-create.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/lot-create.js +1 -1
- package/dist/modules/stock_backend/screens/lot-create.js.map +1 -1
- package/dist/modules/stock_backend/screens/lot-detail.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/lot-detail.js +3 -2
- package/dist/modules/stock_backend/screens/lot-detail.js.map +1 -1
- package/dist/modules/stock_backend/screens/lots-list.d.ts +1 -1
- package/dist/modules/stock_backend/screens/lots-list.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/lots-list.js +1 -1
- package/dist/modules/stock_backend/screens/lots-list.js.map +1 -1
- package/dist/modules/stock_backend/screens/overview.d.ts +9 -0
- package/dist/modules/stock_backend/screens/overview.d.ts.map +1 -0
- package/dist/modules/stock_backend/screens/overview.js +38 -0
- package/dist/modules/stock_backend/screens/overview.js.map +1 -0
- package/dist/modules/stock_backend/screens/picking-type-create.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/picking-type-create.js +1 -1
- package/dist/modules/stock_backend/screens/picking-type-create.js.map +1 -1
- package/dist/modules/stock_backend/screens/picking-types-list.d.ts +1 -1
- package/dist/modules/stock_backend/screens/picking-types-list.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/picking-types-list.js +1 -1
- package/dist/modules/stock_backend/screens/picking-types-list.js.map +1 -1
- package/dist/modules/stock_backend/screens/replenishment-create.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/replenishment-create.js +1 -1
- package/dist/modules/stock_backend/screens/replenishment-create.js.map +1 -1
- package/dist/modules/stock_backend/screens/replenishment-list.d.ts +2 -2
- package/dist/modules/stock_backend/screens/replenishment-list.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/replenishment-list.js +2 -2
- package/dist/modules/stock_backend/screens/replenishment-list.js.map +1 -1
- package/dist/modules/stock_backend/screens/stock-route-create.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/stock-route-create.js +1 -1
- package/dist/modules/stock_backend/screens/stock-route-create.js.map +1 -1
- package/dist/modules/stock_backend/screens/stock-route-detail.js +2 -1
- package/dist/modules/stock_backend/screens/stock-route-detail.js.map +1 -1
- package/dist/modules/stock_backend/screens/stock-routes-list.d.ts +1 -1
- package/dist/modules/stock_backend/screens/stock-routes-list.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/stock-routes-list.js +1 -1
- package/dist/modules/stock_backend/screens/stock-routes-list.js.map +1 -1
- package/dist/modules/stock_backend/screens/transfer-create.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/transfer-create.js +1 -1
- package/dist/modules/stock_backend/screens/transfer-create.js.map +1 -1
- package/dist/modules/stock_backend/screens/transfer-detail.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/transfer-detail.js +3 -2
- package/dist/modules/stock_backend/screens/transfer-detail.js.map +1 -1
- package/dist/modules/stock_backend/screens/transfers-list.d.ts +1 -1
- package/dist/modules/stock_backend/screens/transfers-list.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/transfers-list.js +1 -1
- package/dist/modules/stock_backend/screens/transfers-list.js.map +1 -1
- package/dist/modules/stock_backend/screens/warehouse-create.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/warehouse-create.js +1 -1
- package/dist/modules/stock_backend/screens/warehouse-create.js.map +1 -1
- package/dist/modules/stock_backend/screens/warehouses-list.d.ts +1 -1
- package/dist/modules/stock_backend/screens/warehouses-list.d.ts.map +1 -1
- package/dist/modules/stock_backend/screens/warehouses-list.js +1 -1
- package/dist/modules/stock_backend/screens/warehouses-list.js.map +1 -1
- package/dist/modules/stock_backend/search.d.ts +29 -0
- package/dist/modules/stock_backend/search.d.ts.map +1 -1
- package/dist/modules/stock_backend/search.js +22 -0
- package/dist/modules/stock_backend/search.js.map +1 -1
- package/dist/modules/user_backend/client/access-policy-modal.d.mts +4 -4
- package/dist/modules/user_backend/client/access-policy-modal.d.mts.map +1 -1
- package/dist/modules/user_backend/client/access-policy-modal.mjs +1 -1
- package/dist/modules/user_backend/client/access-policy-modal.mjs.map +3 -3
- package/dist/modules/user_backend/client/role-modal.d.mts +6 -6
- package/dist/modules/user_backend/client/role-modal.d.mts.map +1 -1
- package/dist/modules/user_backend/client/role-modal.mjs +1 -1
- package/dist/modules/user_backend/client/role-modal.mjs.map +3 -3
- package/dist/modules/user_backend/client/user-modal.d.mts +8 -8
- package/dist/modules/user_backend/client/user-modal.d.mts.map +1 -1
- package/dist/modules/user_backend/client/user-modal.mjs +1 -1
- package/dist/modules/user_backend/client/user-modal.mjs.map +3 -3
- package/dist/modules/user_backend/messages.d.ts +0 -6
- package/dist/modules/user_backend/messages.d.ts.map +1 -1
- package/dist/modules/user_backend/messages.js +0 -6
- package/dist/modules/user_backend/messages.js.map +1 -1
- package/dist/modules/user_backend/screens/access-policies-list.d.ts.map +1 -1
- package/dist/modules/user_backend/screens/access-policies-list.js +1 -1
- package/dist/modules/user_backend/screens/access-policies-list.js.map +1 -1
- package/dist/modules/user_backend/screens/profile-form.d.ts.map +1 -1
- package/dist/modules/user_backend/screens/profile-form.js +1 -1
- package/dist/modules/user_backend/screens/profile-form.js.map +1 -1
- package/dist/modules/user_backend/screens/roles-list.d.ts.map +1 -1
- package/dist/modules/user_backend/screens/roles-list.js +1 -1
- package/dist/modules/user_backend/screens/roles-list.js.map +1 -1
- package/dist/modules/user_backend/screens/users-list.d.ts.map +1 -1
- package/dist/modules/user_backend/screens/users-list.js +1 -1
- package/dist/modules/user_backend/screens/users-list.js.map +1 -1
- package/dist/modules/website_backend/screens/page-frame.d.ts +2 -3
- package/dist/modules/website_backend/screens/page-frame.d.ts.map +1 -1
- package/dist/modules/website_backend/screens/page-frame.js +2 -2
- package/dist/modules/website_backend/screens/page-frame.js.map +1 -1
- package/dist/permission-catalogue.d.ts.map +1 -1
- package/dist/permission-catalogue.js +2 -0
- package/dist/permission-catalogue.js.map +1 -1
- package/dist/role-templates.d.ts.map +1 -1
- package/dist/role-templates.js +23 -3
- package/dist/role-templates.js.map +1 -1
- package/dist/scaffold/index.js +1 -1
- package/dist/ui/client/live-doc-shell.d.ts +27 -1
- package/dist/ui/client/live-doc-shell.d.ts.map +1 -1
- package/dist/ui/client/live-doc-shell.js +43 -5
- package/dist/ui/client/live-doc-shell.js.map +1 -1
- package/dist/ui/client/live-doc-tail.d.ts +4 -0
- package/dist/ui/client/live-doc-tail.d.ts.map +1 -0
- package/dist/ui/client/live-doc-tail.js +21 -0
- package/dist/ui/client/live-doc-tail.js.map +1 -0
- package/dist/ui/client/live-doc-view.d.ts +18 -0
- package/dist/ui/client/live-doc-view.d.ts.map +1 -1
- package/dist/ui/client/live-doc-view.js +183 -4
- package/dist/ui/client/live-doc-view.js.map +1 -1
- package/dist/ui/client/live-doc.css +81 -0
- package/dist/ui/client/live-doc.d.mts +6 -3
- package/dist/ui/client/live-doc.d.mts.map +1 -1
- package/dist/ui/client/live-doc.mjs +14 -10
- package/dist/ui/client/live-doc.mjs.map +4 -4
- package/dist/ui/layout.d.ts +2 -2
- package/dist/ui/layout.d.ts.map +1 -1
- package/dist/ui/layout.js +3 -3
- package/dist/ui/layout.js.map +1 -1
- package/package.json +4 -4
- package/dist/modules/flow/functions.d.ts +0 -3
- package/dist/modules/flow/functions.d.ts.map +0 -1
- package/dist/modules/flow/functions.js +0 -1857
- package/dist/modules/flow/functions.js.map +0 -1
- package/dist/modules/flow/operations.d.ts +0 -414
- package/dist/modules/flow/operations.d.ts.map +0 -1
- package/dist/modules/flow/operations.js +0 -1671
- package/dist/modules/flow/operations.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../../../../packages/ketsuite/src/modules/crm_backend/screens/pipeline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAWtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAEjD,0FAA0F;AAC1F,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,MACtB,UAAU,SACN,KAAK,SACL,QAAQ,YACN,SAAS,cAAc,EAAE,KACjC,
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../../../../packages/ketsuite/src/modules/crm_backend/screens/pipeline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAWtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAEjD,0FAA0F;AAC1F,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,MACtB,UAAU,SACN,KAAK,SACL,QAAQ,YACN,SAAS,cAAc,EAAE,KACjC,cAuCF,CAAA"}
|
|
@@ -10,7 +10,7 @@ import { BoardPage, CardGrid, icon, listChrome, Metric, pageTrailFromFrame, shel
|
|
|
10
10
|
*/
|
|
11
11
|
export const pipelineScreen = (_, frame, board, figures = []) => {
|
|
12
12
|
const title = _('crm_backend.pipeline.title');
|
|
13
|
-
return shell(_, title, _jsx(BoardPage, { variant: "operational", frame: frame, context: pageTrailFromFrame(title, frame), title: title,
|
|
13
|
+
return shell(_, title, _jsx(BoardPage, { variant: "operational", frame: frame, context: pageTrailFromFrame(title, frame), title: title, controls: frame.chrome ? listChrome(_, title, { ...frame.chrome, layout: 'command' }, false) : undefined, body: stack([
|
|
14
14
|
...(figures.length
|
|
15
15
|
? [
|
|
16
16
|
_jsx(CardGrid, { items: figures, id: (figure) => figure.id, card: (figure) => (_jsx(Metric, { label: figure.label, value: figure.value, detail: figure.detail ?? null, icon: icon(figure.icon), tone: "money" })) }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../../../../../../packages/ketsuite/src/modules/crm_backend/screens/pipeline.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,MAAM,EACN,kBAAkB,EAClB,KAAK,EACL,KAAK,GACN,MAAM,sBAAsB,CAAA;AAY7B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,CAAa,EACb,KAAY,EACZ,KAAe,EACf,OAAO,GAA8B,EAAE,EACvB,EAAE;IAClB,MAAM,KAAK,GAAG,CAAC,CAAC,4BAA4B,CAAC,CAAA;IAC7C,OAAO,KAAK,CACV,CAAC,EACD,KAAK,EACL,KAAC,SAAS,IACR,OAAO,EAAC,aAAa,EACrB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,EACzC,KAAK,EAAE,KAAK,EACZ,
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../../../../../../packages/ketsuite/src/modules/crm_backend/screens/pipeline.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,MAAM,EACN,kBAAkB,EAClB,KAAK,EACL,KAAK,GACN,MAAM,sBAAsB,CAAA;AAY7B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,CAAa,EACb,KAAY,EACZ,KAAe,EACf,OAAO,GAA8B,EAAE,EACvB,EAAE;IAClB,MAAM,KAAK,GAAG,CAAC,CAAC,4BAA4B,CAAC,CAAA;IAC7C,OAAO,KAAK,CACV,CAAC,EACD,KAAK,EACL,KAAC,SAAS,IACR,OAAO,EAAC,aAAa,EACrB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,EACzC,KAAK,EAAE,KAAK,EACZ,QAAQ,EACN,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAEhG,IAAI,EAAE,KAAK,CACT;YACE,GAAG,CAAC,OAAO,CAAC,MAAM;gBAChB,CAAC,CAAC;oBACE,KAAC,QAAQ,IACP,KAAK,EAAE,OAAO,EACd,EAAE,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EACzC,IAAI,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,CAChC,KAAC,MAAM,IACL,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,EAC7B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EACvB,IAAI,EAAC,OAAO,GACZ,CACH,GACD;iBACH;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,KAAK;SACN,EACD,SAAS,CACV,GACD,EACF,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAC1C,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-check.d.ts","sourceRoot":"","sources":["../../../../../../../packages/ketsuite/src/modules/flow/domain/command-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAG5C,eAAO,MAAM,OAAO,QAAS,GAAG,OAAO,OAAO,6CAI7C,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { actorRequired, commandKey, invalid, issue } from './command.js';
|
|
2
|
+
export const command = (ctx, key) => {
|
|
3
|
+
if (!actorRequired(ctx))
|
|
4
|
+
return invalid(issue('actor', 'flow.error.actorRequired'));
|
|
5
|
+
if (!commandKey(key))
|
|
6
|
+
return invalid(issue('idempotencyKey', 'flow.error.idempotencyRequired'));
|
|
7
|
+
return null;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=command-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-check.js","sourceRoot":"","sources":["../../../../../../../../packages/ketsuite/src/modules/flow/domain/command-check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAExE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAQ,EAAE,GAAY,EAAE,EAAE;IAChD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC,CAAA;IACnF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,gCAAgC,CAAC,CAAC,CAAA;IAC/F,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Ctx } from '@ketvietlab/ketjs';
|
|
2
|
+
export type FlowIssue = {
|
|
3
|
+
field: string;
|
|
4
|
+
code: string;
|
|
5
|
+
params?: Record<string, unknown>;
|
|
6
|
+
};
|
|
7
|
+
export type FlowResult = {
|
|
8
|
+
ok: boolean;
|
|
9
|
+
id?: string;
|
|
10
|
+
errors?: FlowIssue[];
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
};
|
|
13
|
+
export declare const issue: (field: string, code: string, params?: Record<string, unknown>) => FlowIssue;
|
|
14
|
+
export declare const invalid: (...errors: FlowIssue[]) => FlowResult;
|
|
15
|
+
export declare const now: () => string;
|
|
16
|
+
export declare const n: (value: unknown) => number;
|
|
17
|
+
export declare const normalized: (value: unknown) => string;
|
|
18
|
+
export declare const actorRequired: (ctx: Ctx) => string | null;
|
|
19
|
+
/**
|
|
20
|
+
* The id of a record a command creates, derived from what the command is
|
|
21
|
+
* deduplicated under.
|
|
22
|
+
*
|
|
23
|
+
* A form that is submitted twice — a double click, a back button, a retry from
|
|
24
|
+
* a phone that lost its connection — sends the same idempotency key both
|
|
25
|
+
* times. If the id is fresh on each attempt, the second attempt is a different
|
|
26
|
+
* record and gets written as one: two issues from one intent. Deriving the id
|
|
27
|
+
* from the key makes the replay byte-identical, so it lands on the record the
|
|
28
|
+
* first attempt already made and updates it instead (FLW-033).
|
|
29
|
+
*/
|
|
30
|
+
export declare const commandRecordId: (namespace: string, key: string) => string;
|
|
31
|
+
export declare const commandKey: (value: unknown) => string | null;
|
|
32
|
+
export declare const createFlowId: () => string;
|
|
33
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../../../../packages/ketsuite/src/modules/flow/domain/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAG5C,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAA;AAEzF,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAA;AAEnG,eAAO,MAAM,KAAK,UAAW,MAAM,QAAQ,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,SAIpF,CAAA;AAEF,eAAO,MAAM,OAAO,cAAe,SAAS,EAAE,KAAG,UAAqC,CAAA;AAEtF,eAAO,MAAM,GAAG,QAAO,MAAkC,CAAA;AAEzD,eAAO,MAAM,CAAC,UAAW,OAAO,KAAG,MAA4B,CAAA;AAE/D,eAAO,MAAM,UAAU,UAAW,OAAO,KAAG,MAI1B,CAAA;AAElB,eAAO,MAAM,aAAa,QAAS,GAAG,KAAG,MAAM,GAAG,IAAyB,CAAA;AAE3E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,cAAe,MAAM,OAAO,MAAM,KAAG,MAGhE,CAAA;AAED,eAAO,MAAM,UAAU,UAAW,OAAO,KAAG,MAAM,GAAG,IAGpD,CAAA;AAED,eAAO,MAAM,YAAY,QAAO,MAAsB,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
export const issue = (field, code, params) => ({
|
|
3
|
+
field,
|
|
4
|
+
code,
|
|
5
|
+
...(params ? { params } : {}),
|
|
6
|
+
});
|
|
7
|
+
export const invalid = (...errors) => ({ ok: false, errors });
|
|
8
|
+
export const now = () => new Date().toISOString();
|
|
9
|
+
export const n = (value) => Number(value ?? 0);
|
|
10
|
+
export const normalized = (value) => String(value ?? '')
|
|
11
|
+
.normalize('NFKC')
|
|
12
|
+
.trim()
|
|
13
|
+
.toLowerCase();
|
|
14
|
+
export const actorRequired = (ctx) => ctx.actor || null;
|
|
15
|
+
/**
|
|
16
|
+
* The id of a record a command creates, derived from what the command is
|
|
17
|
+
* deduplicated under.
|
|
18
|
+
*
|
|
19
|
+
* A form that is submitted twice — a double click, a back button, a retry from
|
|
20
|
+
* a phone that lost its connection — sends the same idempotency key both
|
|
21
|
+
* times. If the id is fresh on each attempt, the second attempt is a different
|
|
22
|
+
* record and gets written as one: two issues from one intent. Deriving the id
|
|
23
|
+
* from the key makes the replay byte-identical, so it lands on the record the
|
|
24
|
+
* first attempt already made and updates it instead (FLW-033).
|
|
25
|
+
*/
|
|
26
|
+
export const commandRecordId = (namespace, key) => {
|
|
27
|
+
const hex = createHash('sha256').update(`${namespace}\n${key}`).digest('hex');
|
|
28
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;
|
|
29
|
+
};
|
|
30
|
+
export const commandKey = (value) => {
|
|
31
|
+
const key = String(value ?? '').trim();
|
|
32
|
+
return key.length >= 8 && key.length <= 200 ? key : null;
|
|
33
|
+
};
|
|
34
|
+
export const createFlowId = () => randomUUID();
|
|
35
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../../../../../packages/ketsuite/src/modules/flow/domain/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAMpD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,MAAgC,EAAa,EAAE,CAAC,CAAC;IAClG,KAAK;IACL,IAAI;IACJ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CAC9B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,MAAmB,EAAc,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;AAEtF,MAAM,CAAC,MAAM,GAAG,GAAG,GAAW,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;AAEzD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAA;AAE/D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAc,EAAU,EAAE,CACnD,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;KAChB,SAAS,CAAC,MAAM,CAAC;KACjB,IAAI,EAAE;KACN,WAAW,EAAE,CAAA;AAElB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAQ,EAAiB,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAA;AAE3E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAE,GAAW,EAAU,EAAE;IACxE,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC7E,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAA;AAChH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAc,EAAiB,EAAE;IAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACtC,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;AAC1D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,GAAW,EAAE,CAAC,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { Ctx } from '@ketvietlab/ketjs';
|
|
2
|
+
import type { FlowResult } from './command.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Move an issue into another project.
|
|
5
|
+
*
|
|
6
|
+
* Both ends go through the membership gate: moving work into a project you
|
|
7
|
+
* cannot see is writing to a project you cannot see, and moving it out of one
|
|
8
|
+
* is reading it. Either way the answer is the same "not found" every other
|
|
9
|
+
* Flow path gives (FLW-DEC-012).
|
|
10
|
+
*
|
|
11
|
+
* An issue with children refuses rather than leaving them behind pointing at a
|
|
12
|
+
* parent in another project. That is the same shape of orphan the purge job
|
|
13
|
+
* takes care to avoid, and silently splitting a tree is worse than saying no.
|
|
14
|
+
*/
|
|
15
|
+
export declare const BULK_ACTIONS: readonly ['move', 'assign', 'archive', 'restore'];
|
|
16
|
+
export type BulkAction = (typeof BULK_ACTIONS)[number];
|
|
17
|
+
/** How many issues one request may touch. */
|
|
18
|
+
export declare const BULK_LIMIT = 200;
|
|
19
|
+
export type BulkOutcome = {
|
|
20
|
+
applied: number;
|
|
21
|
+
refused: Array<{
|
|
22
|
+
id: string;
|
|
23
|
+
code: string;
|
|
24
|
+
}>;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* One action over many issues, applied one at a time and reported per issue.
|
|
28
|
+
*
|
|
29
|
+
* **This is not protected against concurrent edits, and cannot be.** Every
|
|
30
|
+
* single-issue command takes an `expectedVersion` because the caller read the
|
|
31
|
+
* record and is saying which version they meant. A person who ticked forty
|
|
32
|
+
* rows on a list has read no versions and could not supply them, so this reads
|
|
33
|
+
* each issue's current version and acts on it. Filling in a version on the
|
|
34
|
+
* caller's behalf would be pretending to a guarantee that is not there — the
|
|
35
|
+
* point of saying so here is that the guarantee is genuinely absent, not that
|
|
36
|
+
* it is hidden.
|
|
37
|
+
*
|
|
38
|
+
* What replaces it is the report. Nothing is rolled back for a neighbour's
|
|
39
|
+
* failure: an issue the caller cannot see, one already in the state asked for,
|
|
40
|
+
* one that lost a race — each is named with its reason, and the rest still
|
|
41
|
+
* happen. A bulk action that failed atomically would leave somebody with forty
|
|
42
|
+
* rows and no idea which one was the problem.
|
|
43
|
+
*/
|
|
44
|
+
export declare function bulkIssues(ctx: Ctx, input: {
|
|
45
|
+
ids: readonly string[];
|
|
46
|
+
action: BulkAction;
|
|
47
|
+
value?: string | null;
|
|
48
|
+
idempotencyKey: string;
|
|
49
|
+
}): Promise<FlowResult>;
|
|
50
|
+
//# sourceMappingURL=issue-bulk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-bulk.d.ts","sourceRoot":"","sources":["../../../../../../../packages/ketsuite/src/modules/flow/domain/issue-bulk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,cAAc,CAAA;AAKzD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,YAAI,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAU,CAAA;AAE7E,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtD,6CAA6C;AAC7C,eAAO,MAAM,UAAU,MAAM,CAAA;AAE7B,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC7C,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,GAAG,EACR,KAAK,EAAE;IAAE,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACnG,OAAO,CAAC,UAAU,CAAC,CAwDrB"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { actorRequired, commandKey, commandRecordId, invalid, issue, n } from './command.js';
|
|
2
|
+
import { readableRow } from '../membership.js';
|
|
3
|
+
import { archiveIssue, moveIssue, restoreIssue, saveIssue } from './issue-write.js';
|
|
4
|
+
/**
|
|
5
|
+
* Move an issue into another project.
|
|
6
|
+
*
|
|
7
|
+
* Both ends go through the membership gate: moving work into a project you
|
|
8
|
+
* cannot see is writing to a project you cannot see, and moving it out of one
|
|
9
|
+
* is reading it. Either way the answer is the same "not found" every other
|
|
10
|
+
* Flow path gives (FLW-DEC-012).
|
|
11
|
+
*
|
|
12
|
+
* An issue with children refuses rather than leaving them behind pointing at a
|
|
13
|
+
* parent in another project. That is the same shape of orphan the purge job
|
|
14
|
+
* takes care to avoid, and silently splitting a tree is worse than saying no.
|
|
15
|
+
*/
|
|
16
|
+
export const BULK_ACTIONS = ['move', 'assign', 'archive', 'restore'];
|
|
17
|
+
/** How many issues one request may touch. */
|
|
18
|
+
export const BULK_LIMIT = 200;
|
|
19
|
+
/**
|
|
20
|
+
* One action over many issues, applied one at a time and reported per issue.
|
|
21
|
+
*
|
|
22
|
+
* **This is not protected against concurrent edits, and cannot be.** Every
|
|
23
|
+
* single-issue command takes an `expectedVersion` because the caller read the
|
|
24
|
+
* record and is saying which version they meant. A person who ticked forty
|
|
25
|
+
* rows on a list has read no versions and could not supply them, so this reads
|
|
26
|
+
* each issue's current version and acts on it. Filling in a version on the
|
|
27
|
+
* caller's behalf would be pretending to a guarantee that is not there — the
|
|
28
|
+
* point of saying so here is that the guarantee is genuinely absent, not that
|
|
29
|
+
* it is hidden.
|
|
30
|
+
*
|
|
31
|
+
* What replaces it is the report. Nothing is rolled back for a neighbour's
|
|
32
|
+
* failure: an issue the caller cannot see, one already in the state asked for,
|
|
33
|
+
* one that lost a race — each is named with its reason, and the rest still
|
|
34
|
+
* happen. A bulk action that failed atomically would leave somebody with forty
|
|
35
|
+
* rows and no idea which one was the problem.
|
|
36
|
+
*/
|
|
37
|
+
export async function bulkIssues(ctx, input) {
|
|
38
|
+
if (!actorRequired(ctx))
|
|
39
|
+
return invalid(issue('actor', 'flow.error.actorRequired'));
|
|
40
|
+
if (!commandKey(input.idempotencyKey))
|
|
41
|
+
return invalid(issue('idempotencyKey', 'flow.error.idempotencyRequired'));
|
|
42
|
+
if (!BULK_ACTIONS.includes(input.action))
|
|
43
|
+
return invalid(issue('action', 'flow.error.invalidAction'));
|
|
44
|
+
const ids = [...new Set(input.ids.map(String).filter(Boolean))];
|
|
45
|
+
if (!ids.length)
|
|
46
|
+
return invalid(issue('ids', 'flow.error.required'));
|
|
47
|
+
if (ids.length > BULK_LIMIT)
|
|
48
|
+
return invalid(issue('ids', 'flow.error.tooMany', { limit: BULK_LIMIT }));
|
|
49
|
+
if ((input.action === 'move' || input.action === 'assign') && !input.value)
|
|
50
|
+
return invalid(issue('value', 'flow.error.required'));
|
|
51
|
+
const outcome = { applied: 0, refused: [] };
|
|
52
|
+
for (const id of ids) {
|
|
53
|
+
// Read through the gate, one at a time. An issue in a project this caller
|
|
54
|
+
// is not on is not found, and is refused for that reason rather than
|
|
55
|
+
// being silently skipped — a count that does not add up is worse than a
|
|
56
|
+
// refusal that says why.
|
|
57
|
+
const held = await readableRow(ctx, 'flow.Issue', id);
|
|
58
|
+
if (!held) {
|
|
59
|
+
outcome.refused.push({ id, code: 'flow.error.notFound' });
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
// A key per issue, derived from the one the request carries, so a retry
|
|
63
|
+
// of the whole batch replays each item rather than being refused as a
|
|
64
|
+
// duplicate of the first.
|
|
65
|
+
const key = commandRecordId(`flow.issue.bulk:${input.action}:${id}`, input.idempotencyKey);
|
|
66
|
+
const version = n(held.version);
|
|
67
|
+
const result = input.action === 'move'
|
|
68
|
+
? await moveIssue(ctx, {
|
|
69
|
+
id,
|
|
70
|
+
columnId: String(input.value),
|
|
71
|
+
expectedVersion: version,
|
|
72
|
+
idempotencyKey: key,
|
|
73
|
+
})
|
|
74
|
+
: input.action === 'archive'
|
|
75
|
+
? await archiveIssue(ctx, { id, expectedVersion: version, idempotencyKey: key })
|
|
76
|
+
: input.action === 'restore'
|
|
77
|
+
? await restoreIssue(ctx, { id, expectedVersion: version, idempotencyKey: key })
|
|
78
|
+
: await saveIssue(ctx, {
|
|
79
|
+
id,
|
|
80
|
+
projectId: String(held.projectId),
|
|
81
|
+
columnId: String(held.columnId),
|
|
82
|
+
title: String(held.title ?? ''),
|
|
83
|
+
assigneeUserId: input.value ? String(input.value) : null,
|
|
84
|
+
expectedVersion: version,
|
|
85
|
+
idempotencyKey: key,
|
|
86
|
+
});
|
|
87
|
+
if (result.ok)
|
|
88
|
+
outcome.applied += 1;
|
|
89
|
+
else
|
|
90
|
+
outcome.refused.push({
|
|
91
|
+
id,
|
|
92
|
+
code: String(result.errors?.[0]?.code ?? 'flow.error.invalid'),
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return { ok: true, ...outcome };
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=issue-bulk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-bulk.js","sourceRoot":"","sources":["../../../../../../../../packages/ketsuite/src/modules/flow/domain/issue-bulk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Ctx } from '@ketvietlab/ketjs';
|
|
2
|
+
import type { FlowResult } from './command.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Only `blocks` is checked for cycles.
|
|
5
|
+
*
|
|
6
|
+
* `related` carries no ordering — an issue "related to" another can point back
|
|
7
|
+
* without contradiction — so a cycle there is not a bug. A `blocks` cycle would
|
|
8
|
+
* make every issue in the loop permanently unblockable, which is worth refusing
|
|
9
|
+
* up front rather than discovering at move time.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createsBlockCycle(ctx: Ctx, issueId: string, dependsOnIssueId: string): Promise<boolean>;
|
|
12
|
+
export declare function addDependency(ctx: Ctx, input: {
|
|
13
|
+
id: string;
|
|
14
|
+
issueId: string;
|
|
15
|
+
dependsOnIssueId: string;
|
|
16
|
+
relation: string;
|
|
17
|
+
idempotencyKey: string;
|
|
18
|
+
}): Promise<FlowResult>;
|
|
19
|
+
//# sourceMappingURL=issue-dependency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-dependency.d.ts","sourceRoot":"","sources":["../../../../../../../packages/ketsuite/src/modules/flow/domain/issue-dependency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAK9C;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,CAAC,CAelB;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACzG,OAAO,CAAC,UAAU,CAAC,CA0BrB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { actorRequired, commandKey, invalid, issue } from './command.js';
|
|
2
|
+
import { DEPENDENCY_RELATIONS } from '../types.js';
|
|
3
|
+
import { readableRow } from '../membership.js';
|
|
4
|
+
/**
|
|
5
|
+
* Only `blocks` is checked for cycles.
|
|
6
|
+
*
|
|
7
|
+
* `related` carries no ordering — an issue "related to" another can point back
|
|
8
|
+
* without contradiction — so a cycle there is not a bug. A `blocks` cycle would
|
|
9
|
+
* make every issue in the loop permanently unblockable, which is worth refusing
|
|
10
|
+
* up front rather than discovering at move time.
|
|
11
|
+
*/
|
|
12
|
+
export async function createsBlockCycle(ctx, issueId, dependsOnIssueId) {
|
|
13
|
+
const seen = new Set([issueId]);
|
|
14
|
+
let frontier = [dependsOnIssueId];
|
|
15
|
+
while (frontier.length) {
|
|
16
|
+
if (frontier.includes(issueId))
|
|
17
|
+
return true;
|
|
18
|
+
const next = [];
|
|
19
|
+
for (const id of frontier) {
|
|
20
|
+
if (seen.has(id))
|
|
21
|
+
continue;
|
|
22
|
+
seen.add(id);
|
|
23
|
+
const edges = await ctx.db.select('flow.IssueDependency', { issueId: id, relation: 'blocks' });
|
|
24
|
+
next.push(...edges.map((row) => String(row.dependsOnIssueId)));
|
|
25
|
+
}
|
|
26
|
+
frontier = next;
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
export async function addDependency(ctx, input) {
|
|
31
|
+
if (!actorRequired(ctx))
|
|
32
|
+
return invalid(issue('actor', 'flow.error.actorRequired'));
|
|
33
|
+
if (!commandKey(input.idempotencyKey))
|
|
34
|
+
return invalid(issue('idempotencyKey', 'flow.error.idempotencyRequired'));
|
|
35
|
+
if (!DEPENDENCY_RELATIONS.includes(input.relation))
|
|
36
|
+
return invalid(issue('relation', 'flow.error.invalidRelation'));
|
|
37
|
+
if (input.issueId === input.dependsOnIssueId)
|
|
38
|
+
return invalid(issue('dependsOnIssueId', 'flow.error.selfDependency'));
|
|
39
|
+
return ctx.tx(async (tx) => {
|
|
40
|
+
const [held, target] = await Promise.all([
|
|
41
|
+
readableRow(tx, 'flow.Issue', input.issueId).then((row) => (row ? [row] : [])),
|
|
42
|
+
readableRow(tx, 'flow.Issue', input.dependsOnIssueId).then((row) => (row ? [row] : [])),
|
|
43
|
+
]);
|
|
44
|
+
if (!held[0] || !target[0])
|
|
45
|
+
return invalid(issue('id', 'flow.error.notFound'));
|
|
46
|
+
if (input.relation === 'blocks' && (await createsBlockCycle(tx, input.issueId, input.dependsOnIssueId)))
|
|
47
|
+
return invalid(issue('dependsOnIssueId', 'flow.error.cycle'));
|
|
48
|
+
const inserted = await tx.db.insertIfAbsent('flow.IssueDependency', {
|
|
49
|
+
id: input.id,
|
|
50
|
+
issueId: input.issueId,
|
|
51
|
+
dependsOnIssueId: input.dependsOnIssueId,
|
|
52
|
+
relation: input.relation,
|
|
53
|
+
});
|
|
54
|
+
if (!('dryRun' in inserted) && !inserted.inserted)
|
|
55
|
+
return invalid(issue('dependsOnIssueId', 'flow.error.duplicateDependency'));
|
|
56
|
+
return { ok: true, id: input.id };
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=issue-dependency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-dependency.js","sourceRoot":"","sources":["../../../../../../../../packages/ketsuite/src/modules/flow/domain/issue-dependency.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Ctx } from '@ketvietlab/ketjs';
|
|
2
|
+
import type { FlowResult } from './command.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Subscribes a user to an issue's thread, when the platform can address them.
|
|
5
|
+
*
|
|
6
|
+
* Followers are partner-keyed the whole way down — `mail.Notification`'s
|
|
7
|
+
* `recipientPartnerId` is required — while `user.User.partnerId` is optional
|
|
8
|
+
* by design ("an internal operator needs no entry in the address book"). So a
|
|
9
|
+
* user without one cannot be subscribed and cannot be notified. Skipping is
|
|
10
|
+
* the truthful outcome: the alternative is creating address-book rows as a
|
|
11
|
+
* side effect of assigning a task, which is not a decision this module gets
|
|
12
|
+
* to make.
|
|
13
|
+
*/
|
|
14
|
+
export declare function followIssue(ctx: Ctx, threadId: unknown, userId: unknown): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* The partners behind a list of mentioned users.
|
|
17
|
+
*
|
|
18
|
+
* Mentions are partner-keyed the whole way down, the same as followers, so a
|
|
19
|
+
* user without a partner cannot be mentioned any more than they can be
|
|
20
|
+
* notified — see `followIssue` above for why that is the platform's shape
|
|
21
|
+
* rather than something to work around here. They are dropped rather than
|
|
22
|
+
* refused: a comment naming five people should still reach the four the system
|
|
23
|
+
* can address.
|
|
24
|
+
*/
|
|
25
|
+
export declare function mentionPartners(ctx: Ctx, userIds: readonly string[]): Promise<string[]>;
|
|
26
|
+
export declare function addComment(ctx: Ctx, input: {
|
|
27
|
+
id: string;
|
|
28
|
+
issueId: string;
|
|
29
|
+
body: string;
|
|
30
|
+
kind?: 'comment' | 'note';
|
|
31
|
+
/** Who this comment is addressed to, beyond whoever already follows it. */
|
|
32
|
+
mentionUserIds?: string[];
|
|
33
|
+
idempotencyKey: string;
|
|
34
|
+
}): Promise<FlowResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Follow an issue on purpose, rather than by being assigned it, commenting on
|
|
37
|
+
* it or being named in it.
|
|
38
|
+
*
|
|
39
|
+
* Those three are how everybody who follows an issue got there, and `unfollow`
|
|
40
|
+
* was the only door in the other direction. Somebody who wanted to watch
|
|
41
|
+
* another person's work had to comment on it — which is noise in the timeline —
|
|
42
|
+
* or ask to be mentioned.
|
|
43
|
+
*/
|
|
44
|
+
export declare function startFollowing(ctx: Ctx, input: {
|
|
45
|
+
issueId: string;
|
|
46
|
+
idempotencyKey: string;
|
|
47
|
+
}): Promise<FlowResult>;
|
|
48
|
+
export declare function stopFollowing(ctx: Ctx, input: {
|
|
49
|
+
issueId: string;
|
|
50
|
+
idempotencyKey: string;
|
|
51
|
+
}): Promise<FlowResult>;
|
|
52
|
+
//# sourceMappingURL=issue-discussion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-discussion.d.ts","sourceRoot":"","sources":["../../../../../../../packages/ketsuite/src/modules/flow/domain/issue-discussion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAG5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAI9C;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7F;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAa7F;AAED,wBAAsB,UAAU,CAC9B,GAAG,EAAE,GAAG,EACR,KAAK,EAAE;IACL,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IACzB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;CACvB,GACA,OAAO,CAAC,UAAU,CAAC,CAwBrB;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,UAAU,CAAC,CAQrB;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,UAAU,CAAC,CAUrB"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { followThread, postMessage, unfollowThread } from '../../mail/index.js';
|
|
2
|
+
import { from, inArray } from '@ketvietlab/ketjs';
|
|
3
|
+
import { actorRequired, commandKey, invalid, issue } from './command.js';
|
|
4
|
+
import { readableRow } from '../membership.js';
|
|
5
|
+
/**
|
|
6
|
+
* Subscribes a user to an issue's thread, when the platform can address them.
|
|
7
|
+
*
|
|
8
|
+
* Followers are partner-keyed the whole way down — `mail.Notification`'s
|
|
9
|
+
* `recipientPartnerId` is required — while `user.User.partnerId` is optional
|
|
10
|
+
* by design ("an internal operator needs no entry in the address book"). So a
|
|
11
|
+
* user without one cannot be subscribed and cannot be notified. Skipping is
|
|
12
|
+
* the truthful outcome: the alternative is creating address-book rows as a
|
|
13
|
+
* side effect of assigning a task, which is not a decision this module gets
|
|
14
|
+
* to make.
|
|
15
|
+
*/
|
|
16
|
+
export async function followIssue(ctx, threadId, userId) {
|
|
17
|
+
if (!threadId || !userId)
|
|
18
|
+
return;
|
|
19
|
+
const user = (await ctx.db.select('user.User', { id: userId }))[0];
|
|
20
|
+
if (!user?.partnerId)
|
|
21
|
+
return;
|
|
22
|
+
await followThread(ctx, {
|
|
23
|
+
id: `${String(threadId)}:${String(user.partnerId)}`,
|
|
24
|
+
threadId: String(threadId),
|
|
25
|
+
partnerId: String(user.partnerId),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The partners behind a list of mentioned users.
|
|
30
|
+
*
|
|
31
|
+
* Mentions are partner-keyed the whole way down, the same as followers, so a
|
|
32
|
+
* user without a partner cannot be mentioned any more than they can be
|
|
33
|
+
* notified — see `followIssue` above for why that is the platform's shape
|
|
34
|
+
* rather than something to work around here. They are dropped rather than
|
|
35
|
+
* refused: a comment naming five people should still reach the four the system
|
|
36
|
+
* can address.
|
|
37
|
+
*/
|
|
38
|
+
export async function mentionPartners(ctx, userIds) {
|
|
39
|
+
const wanted = [...new Set(userIds.filter(Boolean).map(String))];
|
|
40
|
+
if (!wanted.length)
|
|
41
|
+
return [];
|
|
42
|
+
const U = ctx.table('user.User');
|
|
43
|
+
const users = await ctx.db.all(from(U).where(inArray(U.id, wanted)));
|
|
44
|
+
return [
|
|
45
|
+
...new Set(users
|
|
46
|
+
.map((user) => user.partnerId)
|
|
47
|
+
.filter(Boolean)
|
|
48
|
+
.map(String)),
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
export async function addComment(ctx, input) {
|
|
52
|
+
if (!actorRequired(ctx))
|
|
53
|
+
return invalid(issue('actor', 'flow.error.actorRequired'));
|
|
54
|
+
if (!commandKey(input.idempotencyKey))
|
|
55
|
+
return invalid(issue('idempotencyKey', 'flow.error.idempotencyRequired'));
|
|
56
|
+
if (!input.body.trim())
|
|
57
|
+
return invalid(issue('body', 'flow.error.required'));
|
|
58
|
+
const held = await readableRow(ctx, 'flow.Issue', input.issueId);
|
|
59
|
+
if (!held)
|
|
60
|
+
return invalid(issue('issueId', 'flow.error.notFound'));
|
|
61
|
+
// Before the message, so the author is subscribed to the replies to it.
|
|
62
|
+
// `postMessage` excludes the author from its own recipients, so this does
|
|
63
|
+
// not notify them about their own comment.
|
|
64
|
+
await followIssue(ctx, held.threadId, ctx.actor);
|
|
65
|
+
// Naming somebody subscribes them, so the answer to what they were asked
|
|
66
|
+
// reaches them too. Being mentioned once is how most people end up following
|
|
67
|
+
// an issue at all, which is also why `stopFollowing` exists below.
|
|
68
|
+
for (const userId of input.mentionUserIds ?? [])
|
|
69
|
+
await followIssue(ctx, held.threadId, userId);
|
|
70
|
+
const result = await postMessage(ctx, {
|
|
71
|
+
id: input.id,
|
|
72
|
+
threadId: String(held.threadId),
|
|
73
|
+
authorUserId: ctx.actor ?? undefined,
|
|
74
|
+
kind: input.kind ?? 'comment',
|
|
75
|
+
body: input.body.trim(),
|
|
76
|
+
mentionPartnerIds: await mentionPartners(ctx, input.mentionUserIds ?? []),
|
|
77
|
+
});
|
|
78
|
+
return { ok: true, id: String(result.message.id) };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Follow an issue on purpose, rather than by being assigned it, commenting on
|
|
82
|
+
* it or being named in it.
|
|
83
|
+
*
|
|
84
|
+
* Those three are how everybody who follows an issue got there, and `unfollow`
|
|
85
|
+
* was the only door in the other direction. Somebody who wanted to watch
|
|
86
|
+
* another person's work had to comment on it — which is noise in the timeline —
|
|
87
|
+
* or ask to be mentioned.
|
|
88
|
+
*/
|
|
89
|
+
export async function startFollowing(ctx, input) {
|
|
90
|
+
if (!actorRequired(ctx))
|
|
91
|
+
return invalid(issue('actor', 'flow.error.actorRequired'));
|
|
92
|
+
if (!commandKey(input.idempotencyKey))
|
|
93
|
+
return invalid(issue('idempotencyKey', 'flow.error.idempotencyRequired'));
|
|
94
|
+
const held = await readableRow(ctx, 'flow.Issue', input.issueId);
|
|
95
|
+
if (!held)
|
|
96
|
+
return invalid(issue('issueId', 'flow.error.notFound'));
|
|
97
|
+
await followIssue(ctx, held.threadId, ctx.actor);
|
|
98
|
+
return { ok: true, id: input.issueId };
|
|
99
|
+
}
|
|
100
|
+
export async function stopFollowing(ctx, input) {
|
|
101
|
+
if (!actorRequired(ctx))
|
|
102
|
+
return invalid(issue('actor', 'flow.error.actorRequired'));
|
|
103
|
+
if (!commandKey(input.idempotencyKey))
|
|
104
|
+
return invalid(issue('idempotencyKey', 'flow.error.idempotencyRequired'));
|
|
105
|
+
const held = await readableRow(ctx, 'flow.Issue', input.issueId);
|
|
106
|
+
if (!held)
|
|
107
|
+
return invalid(issue('issueId', 'flow.error.notFound'));
|
|
108
|
+
const user = (await ctx.db.select('user.User', { id: ctx.actor }))[0];
|
|
109
|
+
if (!user?.partnerId)
|
|
110
|
+
return { ok: true, removed: 0 };
|
|
111
|
+
const removed = await unfollowThread(ctx, String(held.threadId), String(user.partnerId));
|
|
112
|
+
return { ok: true, removed };
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=issue-discussion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-discussion.js","sourceRoot":"","sources":["../../../../../../../../packages/ketsuite/src/modules/flow/domain/issue-discussion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Ctx, Row } from '@ketvietlab/ketjs';
|
|
2
|
+
import type { FlowIssue, FlowResult } from './command.ts';
|
|
3
|
+
/**
|
|
4
|
+
* A `blocks` dependency that has not itself reached a terminal column keeps the
|
|
5
|
+
* blocked issue out of one too — the one place the fixed dependency vocabulary
|
|
6
|
+
* (see types.ts) drives actual behavior instead of just being a label.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* What a project keeps to itself, and what travels with an issue that leaves.
|
|
10
|
+
*
|
|
11
|
+
* Almost everything an issue points at belongs to the project it is in:
|
|
12
|
+
* columns, issue types, epics, sprints and custom field definitions are all
|
|
13
|
+
* keyed by project, so none of them mean anything on the other side. Tags are
|
|
14
|
+
* the exception and stay untouched, because a tag belongs to the company
|
|
15
|
+
* rather than to the project that happened to use it (FLW-DEC-006).
|
|
16
|
+
*
|
|
17
|
+
* The mapping is by `code`, not by id. A destination that has its own "bug"
|
|
18
|
+
* type or its own "severity" field is asking for the same thing under the same
|
|
19
|
+
* name, and carrying the value across is what somebody moving work expects.
|
|
20
|
+
* Anything with no counterpart is dropped and counted, because a move that
|
|
21
|
+
* quietly loses a field value is a move nobody can audit afterwards.
|
|
22
|
+
*/
|
|
23
|
+
export type TransferReport = {
|
|
24
|
+
columnId: string;
|
|
25
|
+
typeId: string | null;
|
|
26
|
+
epicCleared: boolean;
|
|
27
|
+
sprintCleared: boolean;
|
|
28
|
+
};
|
|
29
|
+
export declare function planTransfer(ctx: Ctx, held: Row, projectId: string, columnId: unknown): Promise<TransferReport | FlowIssue>;
|
|
30
|
+
/** Carry the custom field values whose code exists on the other side. */
|
|
31
|
+
export declare function carryFields(ctx: Ctx, fromIssueId: string, toIssueId: string, projectId: string): Promise<{
|
|
32
|
+
carried: number;
|
|
33
|
+
dropped: number;
|
|
34
|
+
}>;
|
|
35
|
+
export declare function transferIssue(ctx: Ctx, input: {
|
|
36
|
+
id: string;
|
|
37
|
+
projectId: string;
|
|
38
|
+
columnId?: string | null;
|
|
39
|
+
expectedVersion: number;
|
|
40
|
+
idempotencyKey: string;
|
|
41
|
+
}): Promise<FlowResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Put a copy of an issue into another project, leaving the original alone.
|
|
44
|
+
*
|
|
45
|
+
* The same mapping `transferIssue` uses, because the crossing is the same
|
|
46
|
+
* crossing — a type or a field that has no counterpart on the other side has
|
|
47
|
+
* none whether the issue is moving or being duplicated.
|
|
48
|
+
*
|
|
49
|
+
* What a copy deliberately does not bring is the history: the comments, the
|
|
50
|
+
* followers and the document are the record of a conversation that happened
|
|
51
|
+
* about *that* issue, and duplicating them would put words in people's mouths
|
|
52
|
+
* on a record they never saw. The copy starts with a title and the fields, and
|
|
53
|
+
* whoever asked for it can say the rest themselves (FLW-020).
|
|
54
|
+
*/
|
|
55
|
+
export declare function copyIssue(ctx: Ctx, input: {
|
|
56
|
+
id: string;
|
|
57
|
+
projectId: string;
|
|
58
|
+
columnId?: string | null;
|
|
59
|
+
title?: string | null;
|
|
60
|
+
idempotencyKey: string;
|
|
61
|
+
}): Promise<FlowResult>;
|
|
62
|
+
//# sourceMappingURL=issue-transfer.d.ts.map
|