@things-factory/worklist 10.1.248 → 10.1.249
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-client/activity-cells.d.ts +21 -0
- package/dist-client/activity-cells.js +117 -0
- package/dist-client/activity-cells.js.map +1 -0
- package/dist-client/activity-state-counts.d.ts +6 -0
- package/dist-client/activity-state-counts.js +23 -0
- package/dist-client/activity-state-counts.js.map +1 -0
- package/dist-client/activity-summary-generator.d.ts +2 -0
- package/dist-client/activity-summary-generator.js +155 -0
- package/dist-client/activity-summary-generator.js.map +1 -0
- package/dist-client/approval-progress.d.ts +18 -0
- package/dist-client/approval-progress.js +31 -0
- package/dist-client/approval-progress.js.map +1 -0
- package/dist-client/bootstrap.d.ts +5 -0
- package/dist-client/bootstrap.js +63 -0
- package/dist-client/bootstrap.js.map +1 -0
- package/dist-client/chip-counts.d.ts +7 -0
- package/dist-client/chip-counts.js +11 -0
- package/dist-client/chip-counts.js.map +1 -0
- package/dist-client/chip-filters.d.ts +60 -0
- package/dist-client/chip-filters.js +102 -0
- package/dist-client/chip-filters.js.map +1 -0
- package/dist-client/components/activity-/bowner-view.d.ts +1 -0
- package/dist-client/components/activity-/bowner-view.js +104 -0
- package/dist-client/components/activity-/bowner-view.js.map +1 -0
- package/dist-client/components/activity-approval-ribon.d.ts +31 -0
- package/dist-client/components/activity-approval-ribon.js +103 -0
- package/dist-client/components/activity-approval-ribon.js.map +1 -0
- package/dist-client/components/activity-fields.d.ts +77 -0
- package/dist-client/components/activity-fields.js +424 -0
- package/dist-client/components/activity-fields.js.map +1 -0
- package/dist-client/components/activity-instance-preview.d.ts +2 -0
- package/dist-client/components/activity-instance-preview.js +177 -0
- package/dist-client/components/activity-instance-preview.js.map +1 -0
- package/dist-client/components/activity-instance-ribon.d.ts +32 -0
- package/dist-client/components/activity-instance-ribon.js +91 -0
- package/dist-client/components/activity-instance-ribon.js.map +1 -0
- package/dist-client/components/activity-intro-view.d.ts +1 -0
- package/dist-client/components/activity-intro-view.js +104 -0
- package/dist-client/components/activity-intro-view.js.map +1 -0
- package/dist-client/components/activity-reporter-view.d.ts +1 -0
- package/dist-client/components/activity-reporter-view.js +103 -0
- package/dist-client/components/activity-reporter-view.js.map +1 -0
- package/dist-client/components/activity-starter-form.d.ts +19 -0
- package/dist-client/components/activity-starter-form.js +264 -0
- package/dist-client/components/activity-starter-form.js.map +1 -0
- package/dist-client/components/activity-thread-ribon.d.ts +38 -0
- package/dist-client/components/activity-thread-ribon.js +95 -0
- package/dist-client/components/activity-thread-ribon.js.map +1 -0
- package/dist-client/components/activity-thread-timeline.d.ts +28 -0
- package/dist-client/components/activity-thread-timeline.js +339 -0
- package/dist-client/components/activity-thread-timeline.js.map +1 -0
- package/dist-client/components/can-pick.d.ts +15 -0
- package/dist-client/components/can-pick.js +16 -0
- package/dist-client/components/can-pick.js.map +1 -0
- package/dist-client/components/decision-content.d.ts +35 -0
- package/dist-client/components/decision-content.js +331 -0
- package/dist-client/components/decision-content.js.map +1 -0
- package/dist-client/components/decision-slots.d.ts +153 -0
- package/dist-client/components/decision-slots.js +152 -0
- package/dist-client/components/decision-slots.js.map +1 -0
- package/dist-client/components/mutation-outcome.d.ts +57 -0
- package/dist-client/components/mutation-outcome.js +78 -0
- package/dist-client/components/mutation-outcome.js.map +1 -0
- package/dist-client/components/say-outcome.d.ts +25 -0
- package/dist-client/components/say-outcome.js +51 -0
- package/dist-client/components/say-outcome.js.map +1 -0
- package/dist-client/components/state-ribon.d.ts +48 -0
- package/dist-client/components/state-ribon.js +225 -0
- package/dist-client/components/state-ribon.js.map +1 -0
- package/dist-client/components/timeline-entries.d.ts +38 -0
- package/dist-client/components/timeline-entries.js +62 -0
- package/dist-client/components/timeline-entries.js.map +1 -0
- package/dist-client/components/work-box-groups.d.ts +25 -0
- package/dist-client/components/work-box-groups.js +98 -0
- package/dist-client/components/work-box-groups.js.map +1 -0
- package/dist-client/due.d.ts +16 -0
- package/dist-client/due.js +78 -0
- package/dist-client/due.js.map +1 -0
- package/dist-client/entity360/person-open-work-section.d.ts +23 -0
- package/dist-client/entity360/person-open-work-section.js +79 -0
- package/dist-client/entity360/person-open-work-section.js.map +1 -0
- package/dist-client/grist-editor/grist-editor-activity-search-key.d.ts +12 -0
- package/dist-client/grist-editor/grist-editor-activity-search-key.js +70 -0
- package/dist-client/grist-editor/grist-editor-activity-search-key.js.map +1 -0
- package/dist-client/grist-editor/grist-renderer-activity-search-key.d.ts +3 -0
- package/dist-client/grist-editor/grist-renderer-activity-search-key.js +25 -0
- package/dist-client/grist-editor/grist-renderer-activity-search-key.js.map +1 -0
- package/dist-client/grist-editor/popup-activity-search-keys-input.d.ts +17 -0
- package/dist-client/grist-editor/popup-activity-search-keys-input.js +175 -0
- package/dist-client/grist-editor/popup-activity-search-keys-input.js.map +1 -0
- package/dist-client/index.d.ts +6 -0
- package/dist-client/index.js +7 -0
- package/dist-client/index.js.map +1 -0
- package/dist-client/my-work-menus.d.ts +90 -0
- package/dist-client/my-work-menus.js +20 -0
- package/dist-client/my-work-menus.js.map +1 -0
- package/dist-client/pages/activity/activity-list-page.d.ts +53 -0
- package/dist-client/pages/activity/activity-list-page.js +600 -0
- package/dist-client/pages/activity/activity-list-page.js.map +1 -0
- package/dist-client/pages/activity/activity-model-item-list.d.ts +24 -0
- package/dist-client/pages/activity/activity-model-item-list.js +292 -0
- package/dist-client/pages/activity/activity-model-item-list.js.map +1 -0
- package/dist-client/pages/activity/activity-page.d.ts +56 -0
- package/dist-client/pages/activity/activity-page.js +396 -0
- package/dist-client/pages/activity/activity-page.js.map +1 -0
- package/dist-client/pages/activity/activity-partial-view.d.ts +13 -0
- package/dist-client/pages/activity/activity-partial-view.js +56 -0
- package/dist-client/pages/activity/activity-partial-view.js.map +1 -0
- package/dist-client/pages/activity/assignee-roles-cell.d.ts +32 -0
- package/dist-client/pages/activity/assignee-roles-cell.js +26 -0
- package/dist-client/pages/activity/assignee-roles-cell.js.map +1 -0
- package/dist-client/pages/activity/starter-list-page.d.ts +31 -0
- package/dist-client/pages/activity/starter-list-page.js +172 -0
- package/dist-client/pages/activity/starter-list-page.js.map +1 -0
- package/dist-client/pages/activity-approval/activity-approval-importer.d.ts +23 -0
- package/dist-client/pages/activity-approval/activity-approval-importer.js +94 -0
- package/dist-client/pages/activity-approval/activity-approval-importer.js.map +1 -0
- package/dist-client/pages/activity-approval/activity-approval-list-page.d.ts +55 -0
- package/dist-client/pages/activity-approval/activity-approval-list-page.js +253 -0
- package/dist-client/pages/activity-approval/activity-approval-list-page.js.map +1 -0
- package/dist-client/pages/activity-approval/activity-approval-page.d.ts +158 -0
- package/dist-client/pages/activity-approval/activity-approval-page.js +875 -0
- package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -0
- package/dist-client/pages/activity-approval/approval-gate.d.ts +29 -0
- package/dist-client/pages/activity-approval/approval-gate.js +21 -0
- package/dist-client/pages/activity-approval/approval-gate.js.map +1 -0
- package/dist-client/pages/activity-catalog/activity-catalog-page.d.ts +31 -0
- package/dist-client/pages/activity-catalog/activity-catalog-page.js +420 -0
- package/dist-client/pages/activity-catalog/activity-catalog-page.js.map +1 -0
- package/dist-client/pages/activity-catalog/activity-detail-actions.d.ts +34 -0
- package/dist-client/pages/activity-catalog/activity-detail-actions.js +18 -0
- package/dist-client/pages/activity-catalog/activity-detail-actions.js.map +1 -0
- package/dist-client/pages/activity-catalog/activity-detail-page.d.ts +90 -0
- package/dist-client/pages/activity-catalog/activity-detail-page.js +525 -0
- package/dist-client/pages/activity-catalog/activity-detail-page.js.map +1 -0
- package/dist-client/pages/activity-catalog/activity-guide.d.ts +16 -0
- package/dist-client/pages/activity-catalog/activity-guide.js +5 -0
- package/dist-client/pages/activity-catalog/activity-guide.js.map +1 -0
- package/dist-client/pages/activity-catalog/activity-panels.d.ts +80 -0
- package/dist-client/pages/activity-catalog/activity-panels.js +53 -0
- package/dist-client/pages/activity-catalog/activity-panels.js.map +1 -0
- package/dist-client/pages/activity-catalog/activity-stage.d.ts +31 -0
- package/dist-client/pages/activity-catalog/activity-stage.js +44 -0
- package/dist-client/pages/activity-catalog/activity-stage.js.map +1 -0
- package/dist-client/pages/activity-instance/activity-instance-list-page.d.ts +42 -0
- package/dist-client/pages/activity-instance/activity-instance-list-page.js +306 -0
- package/dist-client/pages/activity-instance/activity-instance-list-page.js.map +1 -0
- package/dist-client/pages/activity-instance/activity-instance-search-page.d.ts +69 -0
- package/dist-client/pages/activity-instance/activity-instance-search-page.js +309 -0
- package/dist-client/pages/activity-instance/activity-instance-search-page.js.map +1 -0
- package/dist-client/pages/activity-instance/activity-instance-start-page.d.ts +54 -0
- package/dist-client/pages/activity-instance/activity-instance-start-page.js +557 -0
- package/dist-client/pages/activity-instance/activity-instance-start-page.js.map +1 -0
- package/dist-client/pages/activity-instance/activity-instance-view.d.ts +36 -0
- package/dist-client/pages/activity-instance/activity-instance-view.js +494 -0
- package/dist-client/pages/activity-instance/activity-instance-view.js.map +1 -0
- package/dist-client/pages/activity-instance/discard-offer.d.ts +11 -0
- package/dist-client/pages/activity-instance/discard-offer.js +11 -0
- package/dist-client/pages/activity-instance/discard-offer.js.map +1 -0
- package/dist-client/pages/activity-stats/activity-stats-importer.d.ts +23 -0
- package/dist-client/pages/activity-stats/activity-stats-importer.js +94 -0
- package/dist-client/pages/activity-stats/activity-stats-importer.js.map +1 -0
- package/dist-client/pages/activity-stats/activity-stats-list-page.d.ts +55 -0
- package/dist-client/pages/activity-stats/activity-stats-list-page.js +253 -0
- package/dist-client/pages/activity-stats/activity-stats-list-page.js.map +1 -0
- package/dist-client/pages/activity-store/activity-store-page.d.ts +41 -0
- package/dist-client/pages/activity-store/activity-store-page.js +210 -0
- package/dist-client/pages/activity-store/activity-store-page.js.map +1 -0
- package/dist-client/pages/activity-supervisor/reporter-list-page.d.ts +30 -0
- package/dist-client/pages/activity-supervisor/reporter-list-page.js +190 -0
- package/dist-client/pages/activity-supervisor/reporter-list-page.js.map +1 -0
- package/dist-client/pages/activity-template/activity-template-importer.d.ts +11 -0
- package/dist-client/pages/activity-template/activity-template-importer.js +98 -0
- package/dist-client/pages/activity-template/activity-template-importer.js.map +1 -0
- package/dist-client/pages/activity-template/activity-template-list-page.d.ts +53 -0
- package/dist-client/pages/activity-template/activity-template-list-page.js +377 -0
- package/dist-client/pages/activity-template/activity-template-list-page.js.map +1 -0
- package/dist-client/pages/activity-template/activity-template-model-item-list.d.ts +1 -0
- package/dist-client/pages/activity-template/activity-template-model-item-list.js +41 -0
- package/dist-client/pages/activity-template/activity-template-model-item-list.js.map +1 -0
- package/dist-client/pages/activity-thread/activity-thread-importer.d.ts +11 -0
- package/dist-client/pages/activity-thread/activity-thread-importer.js +96 -0
- package/dist-client/pages/activity-thread/activity-thread-importer.js.map +1 -0
- package/dist-client/pages/activity-thread/activity-thread-list-page.d.ts +52 -0
- package/dist-client/pages/activity-thread/activity-thread-list-page.js +248 -0
- package/dist-client/pages/activity-thread/activity-thread-list-page.js.map +1 -0
- package/dist-client/pages/activity-thread/activity-thread-page.d.ts +91 -0
- package/dist-client/pages/activity-thread/activity-thread-page.js +593 -0
- package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -0
- package/dist-client/pages/activity-thread/activity-thread-view-page.d.ts +56 -0
- package/dist-client/pages/activity-thread/activity-thread-view-page.js +385 -0
- package/dist-client/pages/activity-thread/activity-thread-view-page.js.map +1 -0
- package/dist-client/pages/activity-thread/activity-thread-view.d.ts +31 -0
- package/dist-client/pages/activity-thread/activity-thread-view.js +134 -0
- package/dist-client/pages/activity-thread/activity-thread-view.js.map +1 -0
- package/dist-client/pages/activity-thread/thread-sections.d.ts +34 -0
- package/dist-client/pages/activity-thread/thread-sections.js +36 -0
- package/dist-client/pages/activity-thread/thread-sections.js.map +1 -0
- package/dist-client/pages/installable-activity/installable-activity-list-page.d.ts +64 -0
- package/dist-client/pages/installable-activity/installable-activity-list-page.js +424 -0
- package/dist-client/pages/installable-activity/installable-activity-list-page.js.map +1 -0
- package/dist-client/pages/installable-activity/installable-activity-model-item-list.d.ts +1 -0
- package/dist-client/pages/installable-activity/installable-activity-model-item-list.js +20 -0
- package/dist-client/pages/installable-activity/installable-activity-model-item-list.js.map +1 -0
- package/dist-client/pages/todo/approval-done-list-page.d.ts +42 -0
- package/dist-client/pages/todo/approval-done-list-page.js +365 -0
- package/dist-client/pages/todo/approval-done-list-page.js.map +1 -0
- package/dist-client/pages/todo/approval-pending-list-page.d.ts +79 -0
- package/dist-client/pages/todo/approval-pending-list-page.js +683 -0
- package/dist-client/pages/todo/approval-pending-list-page.js.map +1 -0
- package/dist-client/pages/todo/done-list-calendar-page.d.ts +47 -0
- package/dist-client/pages/todo/done-list-calendar-page.js +379 -0
- package/dist-client/pages/todo/done-list-calendar-page.js.map +1 -0
- package/dist-client/pages/todo/draft-list-page.d.ts +64 -0
- package/dist-client/pages/todo/draft-list-page.js +404 -0
- package/dist-client/pages/todo/draft-list-page.js.map +1 -0
- package/dist-client/pages/todo/list-thumbnail.d.ts +25 -0
- package/dist-client/pages/todo/list-thumbnail.js +25 -0
- package/dist-client/pages/todo/list-thumbnail.js.map +1 -0
- package/dist-client/pages/todo/pickable-list-page.d.ts +37 -0
- package/dist-client/pages/todo/pickable-list-page.js +271 -0
- package/dist-client/pages/todo/pickable-list-page.js.map +1 -0
- package/dist-client/pages/todo/todo-list-page.d.ts +66 -0
- package/dist-client/pages/todo/todo-list-page.js +503 -0
- package/dist-client/pages/todo/todo-list-page.js.map +1 -0
- package/dist-client/pages/todo/work-box.d.ts +52 -0
- package/dist-client/pages/todo/work-box.js +54 -0
- package/dist-client/pages/todo/work-box.js.map +1 -0
- package/dist-client/pages/work-door/door-links.d.ts +22 -0
- package/dist-client/pages/work-door/door-links.js +20 -0
- package/dist-client/pages/work-door/door-links.js.map +1 -0
- package/dist-client/pages/work-door/door-sentence.d.ts +75 -0
- package/dist-client/pages/work-door/door-sentence.js +107 -0
- package/dist-client/pages/work-door/door-sentence.js.map +1 -0
- package/dist-client/pages/work-door/door-words.d.ts +48 -0
- package/dist-client/pages/work-door/door-words.js +84 -0
- package/dist-client/pages/work-door/door-words.js.map +1 -0
- package/dist-client/route.d.ts +1 -0
- package/dist-client/route.js +77 -0
- package/dist-client/route.js.map +1 -0
- package/dist-client/templates/activity-approval-context-template.d.ts +3 -0
- package/dist-client/templates/activity-approval-context-template.js +105 -0
- package/dist-client/templates/activity-approval-context-template.js.map +1 -0
- package/dist-client/templates/activity-instance-context-template.d.ts +3 -0
- package/dist-client/templates/activity-instance-context-template.js +118 -0
- package/dist-client/templates/activity-instance-context-template.js.map +1 -0
- package/dist-client/templates/activity-thread-context-template.d.ts +3 -0
- package/dist-client/templates/activity-thread-context-template.js +74 -0
- package/dist-client/templates/activity-thread-context-template.js.map +1 -0
- package/dist-client/templates/context-panel.d.ts +26 -0
- package/dist-client/templates/context-panel.js +182 -0
- package/dist-client/templates/context-panel.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-client/types/activity-approval.d.ts +36 -0
- package/dist-client/types/activity-approval.js +17 -0
- package/dist-client/types/activity-approval.js.map +1 -0
- package/dist-client/types/activity-instance-type.d.ts +77 -0
- package/dist-client/types/activity-instance-type.js +11 -0
- package/dist-client/types/activity-instance-type.js.map +1 -0
- package/dist-client/types/activity-instance.d.ts +72 -0
- package/dist-client/types/activity-instance.js +36 -0
- package/dist-client/types/activity-instance.js.map +1 -0
- package/dist-client/types/activity-model-type.d.ts +31 -0
- package/dist-client/types/activity-model-type.js +18 -0
- package/dist-client/types/activity-model-type.js.map +1 -0
- package/dist-client/types/activity-search-key-item-type.d.ts +6 -0
- package/dist-client/types/activity-search-key-item-type.js +3 -0
- package/dist-client/types/activity-search-key-item-type.js.map +1 -0
- package/dist-client/types/activity-thread-history.d.ts +28 -0
- package/dist-client/types/activity-thread-history.js +7 -0
- package/dist-client/types/activity-thread-history.js.map +1 -0
- package/dist-client/types/activity-thread-type.d.ts +15 -0
- package/dist-client/types/activity-thread-type.js +7 -0
- package/dist-client/types/activity-thread-type.js.map +1 -0
- package/dist-client/types/activity-thread.d.ts +39 -0
- package/dist-client/types/activity-thread.js +18 -0
- package/dist-client/types/activity-thread.js.map +1 -0
- package/dist-client/types/activity.d.ts +68 -0
- package/dist-client/types/activity.js +40 -0
- package/dist-client/types/activity.js.map +1 -0
- package/dist-client/types/types.d.ts +23 -0
- package/dist-client/types/types.js +42 -0
- package/dist-client/types/types.js.map +1 -0
- package/dist-client/when.d.ts +4 -0
- package/dist-client/when.js +72 -0
- package/dist-client/when.js.map +1 -0
- package/dist-client/work-calendar-sources.d.ts +96 -0
- package/dist-client/work-calendar-sources.js +88 -0
- package/dist-client/work-calendar-sources.js.map +1 -0
- package/dist-server/controllers/activity-approval/_abort.d.ts +5 -0
- package/dist-server/controllers/activity-approval/_abort.js +29 -0
- package/dist-server/controllers/activity-approval/_abort.js.map +1 -0
- package/dist-server/controllers/activity-approval/abort.d.ts +5 -0
- package/dist-server/controllers/activity-approval/abort.js +35 -0
- package/dist-server/controllers/activity-approval/abort.js.map +1 -0
- package/dist-server/controllers/activity-approval/approval-line.d.ts +138 -0
- package/dist-server/controllers/activity-approval/approval-line.js +186 -0
- package/dist-server/controllers/activity-approval/approval-line.js.map +1 -0
- package/dist-server/controllers/activity-approval/approve.d.ts +5 -0
- package/dist-server/controllers/activity-approval/approve.js +142 -0
- package/dist-server/controllers/activity-approval/approve.js.map +1 -0
- package/dist-server/controllers/activity-approval/check-authority.d.ts +8 -0
- package/dist-server/controllers/activity-approval/check-authority.js +29 -0
- package/dist-server/controllers/activity-approval/check-authority.js.map +1 -0
- package/dist-server/controllers/activity-approval/claim.d.ts +42 -0
- package/dist-server/controllers/activity-approval/claim.js +77 -0
- package/dist-server/controllers/activity-approval/claim.js.map +1 -0
- package/dist-server/controllers/activity-approval/create-approval.d.ts +41 -0
- package/dist-server/controllers/activity-approval/create-approval.js +85 -0
- package/dist-server/controllers/activity-approval/create-approval.js.map +1 -0
- package/dist-server/controllers/activity-approval/delegate.d.ts +23 -0
- package/dist-server/controllers/activity-approval/delegate.js +113 -0
- package/dist-server/controllers/activity-approval/delegate.js.map +1 -0
- package/dist-server/controllers/activity-approval/delegation.d.ts +21 -0
- package/dist-server/controllers/activity-approval/delegation.js +17 -0
- package/dist-server/controllers/activity-approval/delegation.js.map +1 -0
- package/dist-server/controllers/activity-approval/opinion.d.ts +10 -0
- package/dist-server/controllers/activity-approval/opinion.js +43 -0
- package/dist-server/controllers/activity-approval/opinion.js.map +1 -0
- package/dist-server/controllers/activity-approval/reject.d.ts +5 -0
- package/dist-server/controllers/activity-approval/reject.js +93 -0
- package/dist-server/controllers/activity-approval/reject.js.map +1 -0
- package/dist-server/controllers/activity-approval/resolve-judgeable-seats.d.ts +21 -0
- package/dist-server/controllers/activity-approval/resolve-judgeable-seats.js +60 -0
- package/dist-server/controllers/activity-approval/resolve-judgeable-seats.js.map +1 -0
- package/dist-server/controllers/activity-approval/save.d.ts +5 -0
- package/dist-server/controllers/activity-approval/save.js +56 -0
- package/dist-server/controllers/activity-approval/save.js.map +1 -0
- package/dist-server/controllers/activity-approval/seat-standing.d.ts +66 -0
- package/dist-server/controllers/activity-approval/seat-standing.js +57 -0
- package/dist-server/controllers/activity-approval/seat-standing.js.map +1 -0
- package/dist-server/controllers/activity-installation/activity-installation-controller.d.ts +79 -0
- package/dist-server/controllers/activity-installation/activity-installation-controller.js +99 -0
- package/dist-server/controllers/activity-installation/activity-installation-controller.js.map +1 -0
- package/dist-server/controllers/activity-installation/call-webhook.d.ts +3 -0
- package/dist-server/controllers/activity-installation/call-webhook.js +42 -0
- package/dist-server/controllers/activity-installation/call-webhook.js.map +1 -0
- package/dist-server/controllers/activity-installation/installable-to-activity.d.ts +77 -0
- package/dist-server/controllers/activity-installation/installable-to-activity.js +68 -0
- package/dist-server/controllers/activity-installation/installable-to-activity.js.map +1 -0
- package/dist-server/controllers/activity-installation/registry-conflict.d.ts +47 -0
- package/dist-server/controllers/activity-installation/registry-conflict.js +47 -0
- package/dist-server/controllers/activity-installation/registry-conflict.js.map +1 -0
- package/dist-server/controllers/activity-instance/abort.d.ts +5 -0
- package/dist-server/controllers/activity-instance/abort.js +62 -0
- package/dist-server/controllers/activity-instance/abort.js.map +1 -0
- package/dist-server/controllers/activity-instance/approval-expectation.d.ts +34 -0
- package/dist-server/controllers/activity-instance/approval-expectation.js +18 -0
- package/dist-server/controllers/activity-instance/approval-expectation.js.map +1 -0
- package/dist-server/controllers/activity-instance/approval-line-input.d.ts +29 -0
- package/dist-server/controllers/activity-instance/approval-line-input.js +44 -0
- package/dist-server/controllers/activity-instance/approval-line-input.js.map +1 -0
- package/dist-server/controllers/activity-instance/assign.d.ts +8 -0
- package/dist-server/controllers/activity-instance/assign.js +152 -0
- package/dist-server/controllers/activity-instance/assign.js.map +1 -0
- package/dist-server/controllers/activity-instance/assignee-input.d.ts +25 -0
- package/dist-server/controllers/activity-instance/assignee-input.js +28 -0
- package/dist-server/controllers/activity-instance/assignee-input.js.map +1 -0
- package/dist-server/controllers/activity-instance/claim-draft.d.ts +17 -0
- package/dist-server/controllers/activity-instance/claim-draft.js +30 -0
- package/dist-server/controllers/activity-instance/claim-draft.js.map +1 -0
- package/dist-server/controllers/activity-instance/discard-draft.d.ts +22 -0
- package/dist-server/controllers/activity-instance/discard-draft.js +54 -0
- package/dist-server/controllers/activity-instance/discard-draft.js.map +1 -0
- package/dist-server/controllers/activity-instance/draft.d.ts +3 -0
- package/dist-server/controllers/activity-instance/draft.js +93 -0
- package/dist-server/controllers/activity-instance/draft.js.map +1 -0
- package/dist-server/controllers/activity-instance/end.d.ts +6 -0
- package/dist-server/controllers/activity-instance/end.js +65 -0
- package/dist-server/controllers/activity-instance/end.js.map +1 -0
- package/dist-server/controllers/activity-instance/entitlement.d.ts +25 -0
- package/dist-server/controllers/activity-instance/entitlement.js +110 -0
- package/dist-server/controllers/activity-instance/entitlement.js.map +1 -0
- package/dist-server/controllers/activity-instance/index.d.ts +6 -0
- package/dist-server/controllers/activity-instance/index.js +10 -0
- package/dist-server/controllers/activity-instance/index.js.map +1 -0
- package/dist-server/controllers/activity-instance/issue.d.ts +3 -0
- package/dist-server/controllers/activity-instance/issue.js +272 -0
- package/dist-server/controllers/activity-instance/issue.js.map +1 -0
- package/dist-server/controllers/activity-instance/pick.d.ts +2 -0
- package/dist-server/controllers/activity-instance/pick.js +112 -0
- package/dist-server/controllers/activity-instance/pick.js.map +1 -0
- package/dist-server/controllers/activity-read/assert-may-read.d.ts +20 -0
- package/dist-server/controllers/activity-read/assert-may-read.js +108 -0
- package/dist-server/controllers/activity-read/assert-may-read.js.map +1 -0
- package/dist-server/controllers/activity-read/participates.d.ts +41 -0
- package/dist-server/controllers/activity-read/participates.js +42 -0
- package/dist-server/controllers/activity-read/participates.js.map +1 -0
- package/dist-server/controllers/activity-thread/_abort.d.ts +5 -0
- package/dist-server/controllers/activity-thread/_abort.js +36 -0
- package/dist-server/controllers/activity-thread/_abort.js.map +1 -0
- package/dist-server/controllers/activity-thread/abort.d.ts +5 -0
- package/dist-server/controllers/activity-thread/abort.js +45 -0
- package/dist-server/controllers/activity-thread/abort.js.map +1 -0
- package/dist-server/controllers/activity-thread/check-authority.d.ts +2 -0
- package/dist-server/controllers/activity-thread/check-authority.js +65 -0
- package/dist-server/controllers/activity-thread/check-authority.js.map +1 -0
- package/dist-server/controllers/activity-thread/delegate.d.ts +7 -0
- package/dist-server/controllers/activity-thread/delegate.js +66 -0
- package/dist-server/controllers/activity-thread/delegate.js.map +1 -0
- package/dist-server/controllers/activity-thread/end.d.ts +6 -0
- package/dist-server/controllers/activity-thread/end.js +44 -0
- package/dist-server/controllers/activity-thread/end.js.map +1 -0
- package/dist-server/controllers/activity-thread/index.d.ts +7 -0
- package/dist-server/controllers/activity-thread/index.js +11 -0
- package/dist-server/controllers/activity-thread/index.js.map +1 -0
- package/dist-server/controllers/activity-thread/restart.d.ts +2 -0
- package/dist-server/controllers/activity-thread/restart.js +63 -0
- package/dist-server/controllers/activity-thread/restart.js.map +1 -0
- package/dist-server/controllers/activity-thread/save.d.ts +3 -0
- package/dist-server/controllers/activity-thread/save.js +45 -0
- package/dist-server/controllers/activity-thread/save.js.map +1 -0
- package/dist-server/controllers/activity-thread/start.d.ts +2 -0
- package/dist-server/controllers/activity-thread/start.js +43 -0
- package/dist-server/controllers/activity-thread/start.js.map +1 -0
- package/dist-server/controllers/activity-thread/submit.d.ts +6 -0
- package/dist-server/controllers/activity-thread/submit.js +90 -0
- package/dist-server/controllers/activity-thread/submit.js.map +1 -0
- package/dist-server/controllers/common.d.ts +34 -0
- package/dist-server/controllers/common.js +346 -0
- package/dist-server/controllers/common.js.map +1 -0
- package/dist-server/controllers/index.d.ts +5 -0
- package/dist-server/controllers/index.js +18 -0
- package/dist-server/controllers/index.js.map +1 -0
- package/dist-server/index.d.ts +6 -0
- package/dist-server/index.js +18 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/role-tasks.d.ts +2 -0
- package/dist-server/role-tasks.js +16 -0
- package/dist-server/role-tasks.js.map +1 -0
- package/dist-server/routes.d.ts +1 -0
- package/dist-server/routes.js +57 -0
- package/dist-server/routes.js.map +1 -0
- package/dist-server/service/activity/activity-decision-key-item-type.d.ts +206 -0
- package/dist-server/service/activity/activity-decision-key-item-type.js +182 -0
- package/dist-server/service/activity/activity-decision-key-item-type.js.map +1 -0
- package/dist-server/service/activity/activity-history.d.ts +44 -0
- package/dist-server/service/activity/activity-history.js +220 -0
- package/dist-server/service/activity/activity-history.js.map +1 -0
- package/dist-server/service/activity/activity-model-type.d.ts +49 -0
- package/dist-server/service/activity/activity-model-type.js +138 -0
- package/dist-server/service/activity/activity-model-type.js.map +1 -0
- package/dist-server/service/activity/activity-mutation.d.ts +12 -0
- package/dist-server/service/activity/activity-mutation.js +416 -0
- package/dist-server/service/activity/activity-mutation.js.map +1 -0
- package/dist-server/service/activity/activity-query.d.ts +24 -0
- package/dist-server/service/activity/activity-query.js +310 -0
- package/dist-server/service/activity/activity-query.js.map +1 -0
- package/dist-server/service/activity/activity-search-key-item-type.d.ts +6 -0
- package/dist-server/service/activity/activity-search-key-item-type.js +28 -0
- package/dist-server/service/activity/activity-search-key-item-type.js.map +1 -0
- package/dist-server/service/activity/activity-type.d.ts +84 -0
- package/dist-server/service/activity/activity-type.js +269 -0
- package/dist-server/service/activity/activity-type.js.map +1 -0
- package/dist-server/service/activity/activity.d.ts +135 -0
- package/dist-server/service/activity/activity.js +328 -0
- package/dist-server/service/activity/activity.js.map +1 -0
- package/dist-server/service/activity/approval-line-seats.d.ts +12 -0
- package/dist-server/service/activity/approval-line-seats.js +68 -0
- package/dist-server/service/activity/approval-line-seats.js.map +1 -0
- package/dist-server/service/activity/credential-field.d.ts +35 -0
- package/dist-server/service/activity/credential-field.js +89 -0
- package/dist-server/service/activity/credential-field.js.map +1 -0
- package/dist-server/service/activity/decision-key-declaration.d.ts +106 -0
- package/dist-server/service/activity/decision-key-declaration.js +181 -0
- package/dist-server/service/activity/decision-key-declaration.js.map +1 -0
- package/dist-server/service/activity/declaration-guard-subscriber.d.ts +24 -0
- package/dist-server/service/activity/declaration-guard-subscriber.js +46 -0
- package/dist-server/service/activity/declaration-guard-subscriber.js.map +1 -0
- package/dist-server/service/activity/event-subscriber.d.ts +7 -0
- package/dist-server/service/activity/event-subscriber.js +21 -0
- package/dist-server/service/activity/event-subscriber.js.map +1 -0
- package/dist-server/service/activity/freeze-decision-sentences-for.d.ts +11 -0
- package/dist-server/service/activity/freeze-decision-sentences-for.js +18 -0
- package/dist-server/service/activity/freeze-decision-sentences-for.js.map +1 -0
- package/dist-server/service/activity/index.d.ts +9 -0
- package/dist-server/service/activity/index.js +13 -0
- package/dist-server/service/activity/index.js.map +1 -0
- package/dist-server/service/activity/search-key-declaration.d.ts +38 -0
- package/dist-server/service/activity/search-key-declaration.js +49 -0
- package/dist-server/service/activity/search-key-declaration.js.map +1 -0
- package/dist-server/service/activity-approval/activity-approval-mutation.d.ts +8 -0
- package/dist-server/service/activity-approval/activity-approval-mutation.js +81 -0
- package/dist-server/service/activity-approval/activity-approval-mutation.js.map +1 -0
- package/dist-server/service/activity-approval/activity-approval-query.d.ts +42 -0
- package/dist-server/service/activity-approval/activity-approval-query.js +391 -0
- package/dist-server/service/activity-approval/activity-approval-query.js.map +1 -0
- package/dist-server/service/activity-approval/activity-approval-subscription.d.ts +6 -0
- package/dist-server/service/activity-approval/activity-approval-subscription.js +39 -0
- package/dist-server/service/activity-approval/activity-approval-subscription.js.map +1 -0
- package/dist-server/service/activity-approval/activity-approval-type.d.ts +10 -0
- package/dist-server/service/activity-approval/activity-approval-type.js +39 -0
- package/dist-server/service/activity-approval/activity-approval-type.js.map +1 -0
- package/dist-server/service/activity-approval/activity-approval.d.ts +67 -0
- package/dist-server/service/activity-approval/activity-approval.js +183 -0
- package/dist-server/service/activity-approval/activity-approval.js.map +1 -0
- package/dist-server/service/activity-approval/event-subscriber.d.ts +7 -0
- package/dist-server/service/activity-approval/event-subscriber.js +46 -0
- package/dist-server/service/activity-approval/event-subscriber.js.map +1 -0
- package/dist-server/service/activity-approval/index.d.ts +8 -0
- package/dist-server/service/activity-approval/index.js +12 -0
- package/dist-server/service/activity-approval/index.js.map +1 -0
- package/dist-server/service/activity-approval/my-pending-approvals.d.ts +33 -0
- package/dist-server/service/activity-approval/my-pending-approvals.js +52 -0
- package/dist-server/service/activity-approval/my-pending-approvals.js.map +1 -0
- package/dist-server/service/activity-instance/activity-instance-history.d.ts +60 -0
- package/dist-server/service/activity-instance/activity-instance-history.js +294 -0
- package/dist-server/service/activity-instance/activity-instance-history.js.map +1 -0
- package/dist-server/service/activity-instance/activity-instance-mutation.d.ts +16 -0
- package/dist-server/service/activity-instance/activity-instance-mutation.js +185 -0
- package/dist-server/service/activity-instance/activity-instance-mutation.js.map +1 -0
- package/dist-server/service/activity-instance/activity-instance-query.d.ts +27 -0
- package/dist-server/service/activity-instance/activity-instance-query.js +386 -0
- package/dist-server/service/activity-instance/activity-instance-query.js.map +1 -0
- package/dist-server/service/activity-instance/activity-instance-subscription.d.ts +6 -0
- package/dist-server/service/activity-instance/activity-instance-subscription.js +39 -0
- package/dist-server/service/activity-instance/activity-instance-subscription.js.map +1 -0
- package/dist-server/service/activity-instance/activity-instance-type.d.ts +107 -0
- package/dist-server/service/activity-instance/activity-instance-type.js +301 -0
- package/dist-server/service/activity-instance/activity-instance-type.js.map +1 -0
- package/dist-server/service/activity-instance/activity-instance.d.ts +81 -0
- package/dist-server/service/activity-instance/activity-instance.js +324 -0
- package/dist-server/service/activity-instance/activity-instance.js.map +1 -0
- package/dist-server/service/activity-instance/assignee-pool.d.ts +59 -0
- package/dist-server/service/activity-instance/assignee-pool.js +99 -0
- package/dist-server/service/activity-instance/assignee-pool.js.map +1 -0
- package/dist-server/service/activity-instance/draft-list-states.d.ts +39 -0
- package/dist-server/service/activity-instance/draft-list-states.js +51 -0
- package/dist-server/service/activity-instance/draft-list-states.js.map +1 -0
- package/dist-server/service/activity-instance/event-subscriber.d.ts +21 -0
- package/dist-server/service/activity-instance/event-subscriber.js +59 -0
- package/dist-server/service/activity-instance/event-subscriber.js.map +1 -0
- package/dist-server/service/activity-instance/index.d.ts +9 -0
- package/dist-server/service/activity-instance/index.js +13 -0
- package/dist-server/service/activity-instance/index.js.map +1 -0
- package/dist-server/service/activity-instance/request-box.d.ts +2 -0
- package/dist-server/service/activity-instance/request-box.js +18 -0
- package/dist-server/service/activity-instance/request-box.js.map +1 -0
- package/dist-server/service/activity-stats/activity-stats-query.d.ts +9 -0
- package/dist-server/service/activity-stats/activity-stats-query.js +230 -0
- package/dist-server/service/activity-stats/activity-stats-query.js.map +1 -0
- package/dist-server/service/activity-stats/activity-stats-type.d.ts +27 -0
- package/dist-server/service/activity-stats/activity-stats-type.js +74 -0
- package/dist-server/service/activity-stats/activity-stats-type.js.map +1 -0
- package/dist-server/service/activity-stats/event-placement.d.ts +55 -0
- package/dist-server/service/activity-stats/event-placement.js +82 -0
- package/dist-server/service/activity-stats/event-placement.js.map +1 -0
- package/dist-server/service/activity-stats/index.d.ts +2 -0
- package/dist-server/service/activity-stats/index.js +6 -0
- package/dist-server/service/activity-stats/index.js.map +1 -0
- package/dist-server/service/activity-summary/activity-summary-query.d.ts +8 -0
- package/dist-server/service/activity-summary/activity-summary-query.js +137 -0
- package/dist-server/service/activity-summary/activity-summary-query.js.map +1 -0
- package/dist-server/service/activity-summary/activity-summary.d.ts +6 -0
- package/dist-server/service/activity-summary/activity-summary.js +28 -0
- package/dist-server/service/activity-summary/activity-summary.js.map +1 -0
- package/dist-server/service/activity-summary/index.d.ts +5 -0
- package/dist-server/service/activity-summary/index.js +9 -0
- package/dist-server/service/activity-summary/index.js.map +1 -0
- package/dist-server/service/activity-summary/open-work.d.ts +4 -0
- package/dist-server/service/activity-summary/open-work.js +51 -0
- package/dist-server/service/activity-summary/open-work.js.map +1 -0
- package/dist-server/service/activity-summary/person-open-work.d.ts +17 -0
- package/dist-server/service/activity-summary/person-open-work.js +68 -0
- package/dist-server/service/activity-summary/person-open-work.js.map +1 -0
- package/dist-server/service/activity-template/activity-template-history.d.ts +32 -0
- package/dist-server/service/activity-template/activity-template-history.js +165 -0
- package/dist-server/service/activity-template/activity-template-history.js.map +1 -0
- package/dist-server/service/activity-template/activity-template-mutation.d.ts +10 -0
- package/dist-server/service/activity-template/activity-template-mutation.js +194 -0
- package/dist-server/service/activity-template/activity-template-mutation.js.map +1 -0
- package/dist-server/service/activity-template/activity-template-query.d.ts +14 -0
- package/dist-server/service/activity-template/activity-template-query.js +112 -0
- package/dist-server/service/activity-template/activity-template-query.js.map +1 -0
- package/dist-server/service/activity-template/activity-template-type.d.ts +44 -0
- package/dist-server/service/activity-template/activity-template-type.js +164 -0
- package/dist-server/service/activity-template/activity-template-type.js.map +1 -0
- package/dist-server/service/activity-template/activity-template.d.ts +36 -0
- package/dist-server/service/activity-template/activity-template.js +154 -0
- package/dist-server/service/activity-template/activity-template.js.map +1 -0
- package/dist-server/service/activity-template/event-subscriber.d.ts +7 -0
- package/dist-server/service/activity-template/event-subscriber.js +21 -0
- package/dist-server/service/activity-template/event-subscriber.js.map +1 -0
- package/dist-server/service/activity-template/index.d.ts +8 -0
- package/dist-server/service/activity-template/index.js +12 -0
- package/dist-server/service/activity-template/index.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread-history-query.d.ts +10 -0
- package/dist-server/service/activity-thread/activity-thread-history-query.js +69 -0
- package/dist-server/service/activity-thread/activity-thread-history-query.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread-history.d.ts +39 -0
- package/dist-server/service/activity-thread/activity-thread-history.js +211 -0
- package/dist-server/service/activity-thread/activity-thread-history.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread-mutation.d.ts +20 -0
- package/dist-server/service/activity-thread/activity-thread-mutation.js +115 -0
- package/dist-server/service/activity-thread/activity-thread-mutation.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread-query.d.ts +24 -0
- package/dist-server/service/activity-thread/activity-thread-query.js +276 -0
- package/dist-server/service/activity-thread/activity-thread-query.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread-subscription.d.ts +6 -0
- package/dist-server/service/activity-thread/activity-thread-subscription.js +38 -0
- package/dist-server/service/activity-thread/activity-thread-subscription.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread-type.d.ts +15 -0
- package/dist-server/service/activity-thread/activity-thread-type.js +50 -0
- package/dist-server/service/activity-thread/activity-thread-type.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread.d.ts +47 -0
- package/dist-server/service/activity-thread/activity-thread.js +197 -0
- package/dist-server/service/activity-thread/activity-thread.js.map +1 -0
- package/dist-server/service/activity-thread/event-subscriber.d.ts +13 -0
- package/dist-server/service/activity-thread/event-subscriber.js +45 -0
- package/dist-server/service/activity-thread/event-subscriber.js.map +1 -0
- package/dist-server/service/activity-thread/index.d.ts +10 -0
- package/dist-server/service/activity-thread/index.js +14 -0
- package/dist-server/service/activity-thread/index.js.map +1 -0
- package/dist-server/service/activity-thread/my-open-threads.d.ts +33 -0
- package/dist-server/service/activity-thread/my-open-threads.js +85 -0
- package/dist-server/service/activity-thread/my-open-threads.js.map +1 -0
- package/dist-server/service/activity-thread/todo-order.d.ts +49 -0
- package/dist-server/service/activity-thread/todo-order.js +70 -0
- package/dist-server/service/activity-thread/todo-order.js.map +1 -0
- package/dist-server/service/approval-notice/approval-notice-rules.d.ts +67 -0
- package/dist-server/service/approval-notice/approval-notice-rules.js +67 -0
- package/dist-server/service/approval-notice/approval-notice-rules.js.map +1 -0
- package/dist-server/service/approval-notice/approval-notice.d.ts +11 -0
- package/dist-server/service/approval-notice/approval-notice.js +76 -0
- package/dist-server/service/approval-notice/approval-notice.js.map +1 -0
- package/dist-server/service/index.d.ts +23 -0
- package/dist-server/service/index.js +75 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/installable-activity/activity-readiness.d.ts +58 -0
- package/dist-server/service/installable-activity/activity-readiness.js +105 -0
- package/dist-server/service/installable-activity/activity-readiness.js.map +1 -0
- package/dist-server/service/installable-activity/index.d.ts +6 -0
- package/dist-server/service/installable-activity/index.js +10 -0
- package/dist-server/service/installable-activity/index.js.map +1 -0
- package/dist-server/service/installable-activity/installable-activity-mutation.d.ts +11 -0
- package/dist-server/service/installable-activity/installable-activity-mutation.js +83 -0
- package/dist-server/service/installable-activity/installable-activity-mutation.js.map +1 -0
- package/dist-server/service/installable-activity/installable-activity-query.d.ts +22 -0
- package/dist-server/service/installable-activity/installable-activity-query.js +127 -0
- package/dist-server/service/installable-activity/installable-activity-query.js.map +1 -0
- package/dist-server/service/installable-activity/installable-activity-type.d.ts +5 -0
- package/dist-server/service/installable-activity/installable-activity-type.js +21 -0
- package/dist-server/service/installable-activity/installable-activity-type.js.map +1 -0
- package/dist-server/service/installable-activity/installable-activity.d.ts +92 -0
- package/dist-server/service/installable-activity/installable-activity.js +140 -0
- package/dist-server/service/installable-activity/installable-activity.js.map +1 -0
- package/dist-server/service/nulls-last.d.ts +30 -0
- package/dist-server/service/nulls-last.js +37 -0
- package/dist-server/service/nulls-last.js.map +1 -0
- package/dist-server/service/subscription/roles-of.d.ts +9 -0
- package/dist-server/service/subscription/roles-of.js +17 -0
- package/dist-server/service/subscription/roles-of.js.map +1 -0
- package/dist-server/service/subscription/subscription-filters.d.ts +47 -0
- package/dist-server/service/subscription/subscription-filters.js +57 -0
- package/dist-server/service/subscription/subscription-filters.js.map +1 -0
- package/dist-server/service/work-door/activity-lookup.d.ts +70 -0
- package/dist-server/service/work-door/activity-lookup.js +110 -0
- package/dist-server/service/work-door/activity-lookup.js.map +1 -0
- package/dist-server/service/work-door/approval-line-standing.d.ts +106 -0
- package/dist-server/service/work-door/approval-line-standing.js +65 -0
- package/dist-server/service/work-door/approval-line-standing.js.map +1 -0
- package/dist-server/service/work-door/index.d.ts +15 -0
- package/dist-server/service/work-door/index.js +20 -0
- package/dist-server/service/work-door/index.js.map +1 -0
- package/dist-server/service/work-door/pass-work-door.d.ts +74 -0
- package/dist-server/service/work-door/pass-work-door.js +45 -0
- package/dist-server/service/work-door/pass-work-door.js.map +1 -0
- package/dist-server/service/work-door/work-door-declaration.d.ts +135 -0
- package/dist-server/service/work-door/work-door-declaration.js +87 -0
- package/dist-server/service/work-door/work-door-declaration.js.map +1 -0
- package/dist-server/service/work-door/work-door-event.d.ts +20 -0
- package/dist-server/service/work-door/work-door-event.js +25 -0
- package/dist-server/service/work-door/work-door-event.js.map +1 -0
- package/dist-server/service/work-door/work-door-journal-service.d.ts +47 -0
- package/dist-server/service/work-door/work-door-journal-service.js +75 -0
- package/dist-server/service/work-door/work-door-journal-service.js.map +1 -0
- package/dist-server/service/work-door/work-door-journal.d.ts +30 -0
- package/dist-server/service/work-door/work-door-journal.js +94 -0
- package/dist-server/service/work-door/work-door-journal.js.map +1 -0
- package/dist-server/service/work-door/work-door-not-used.d.ts +39 -0
- package/dist-server/service/work-door/work-door-not-used.js +86 -0
- package/dist-server/service/work-door/work-door-not-used.js.map +1 -0
- package/dist-server/service/work-door/work-door-resolver.d.ts +32 -0
- package/dist-server/service/work-door/work-door-resolver.js +152 -0
- package/dist-server/service/work-door/work-door-resolver.js.map +1 -0
- package/dist-server/service/work-door/work-door-service.d.ts +36 -0
- package/dist-server/service/work-door/work-door-service.js +127 -0
- package/dist-server/service/work-door/work-door-service.js.map +1 -0
- package/dist-server/service/work-door/work-door-type.d.ts +88 -0
- package/dist-server/service/work-door/work-door-type.js +206 -0
- package/dist-server/service/work-door/work-door-type.js.map +1 -0
- package/dist-server/service/work-door/work-door.d.ts +187 -0
- package/dist-server/service/work-door/work-door.js +119 -0
- package/dist-server/service/work-door/work-door.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createApproval = createApproval;
|
|
4
|
+
exports.createReferences = createReferences;
|
|
5
|
+
/*
|
|
6
|
+
* **결재선 한 항목을 실제 행으로 만든다** — 한 자리.
|
|
7
|
+
*
|
|
8
|
+
* ── 왜 뺐나 (2026-09-01) ─────────────────────────────────────────────────
|
|
9
|
+
* 같은 열다섯 줄이 두 파일에 있었다 — `submit.ts`(첫 결재자)와 `approve.ts`(다음 결재자). 역할로 걸린
|
|
10
|
+
* 경우와 사람으로 걸린 경우를 가르고, 못 찾으면 던지고, 행을 만든다.
|
|
11
|
+
*
|
|
12
|
+
* 참조까지 넣으면 **세 벌**이 된다. 그때 한쪽만 고쳐지는 날이 오고, 그러면 어떤 자격의 결재자만
|
|
13
|
+
* 조용히 안 만들어진다 — 오류가 안 나고 결재가 안 걸린다.
|
|
14
|
+
*/
|
|
15
|
+
const auth_base_1 = require("@things-factory/auth-base");
|
|
16
|
+
const organization_1 = require("@things-factory/organization");
|
|
17
|
+
const activity_approval_js_1 = require("../../service/activity-approval/activity-approval.js");
|
|
18
|
+
const common_js_1 = require("../common.js");
|
|
19
|
+
const approval_line_standing_js_1 = require("../../service/work-door/approval-line-standing.js");
|
|
20
|
+
const approval_notice_js_1 = require("../../service/approval-notice/approval-notice.js");
|
|
21
|
+
/**
|
|
22
|
+
* 결재선 항목 하나로 행을 만든다.
|
|
23
|
+
*
|
|
24
|
+
* 역할로 걸린 것은 `approverRole` 만 채워지고 `approver` 는 비어 있다 — 그 역할을 가진 사람 여럿이 같은
|
|
25
|
+
* 건을 본다. 처리하는 사람이 정해지는 것은 누른 순간이다(§`approve.ts`).
|
|
26
|
+
*/
|
|
27
|
+
async function createApproval(args, context) {
|
|
28
|
+
const { domain, user, tx } = context.state;
|
|
29
|
+
const { item, order, participation, activityThread, transaction } = args;
|
|
30
|
+
const base = {
|
|
31
|
+
domain,
|
|
32
|
+
activityThread,
|
|
33
|
+
round: activityThread.round,
|
|
34
|
+
order,
|
|
35
|
+
judgment: activity_approval_js_1.ActivityApprovalJudgment.Pending,
|
|
36
|
+
participation,
|
|
37
|
+
transaction,
|
|
38
|
+
creator: user,
|
|
39
|
+
updater: user
|
|
40
|
+
};
|
|
41
|
+
if (item.type == organization_1.OrgMemberTargetType.Role) {
|
|
42
|
+
const roleId = (0, approval_line_standing_js_1.seatRoleId)(item);
|
|
43
|
+
if (!roleId) {
|
|
44
|
+
throw new Error(context.t('error.approver role is not set on the approval line', { order }));
|
|
45
|
+
}
|
|
46
|
+
const approverRole = await tx.getRepository(auth_base_1.Role).findOneBy({ id: roleId });
|
|
47
|
+
if (!approverRole) {
|
|
48
|
+
throw new Error(context.t('error.approver role not found', { order }));
|
|
49
|
+
}
|
|
50
|
+
return await told(await tx.getRepository(activity_approval_js_1.ActivityApproval).save({ ...base, approverRole }), participation, context);
|
|
51
|
+
}
|
|
52
|
+
const approver = await (0, common_js_1.getSystemUserFromOrgMemberItem)(item, context);
|
|
53
|
+
if (!approver) {
|
|
54
|
+
throw new Error(context.t('error.approver is not set on the approval line', { order }));
|
|
55
|
+
}
|
|
56
|
+
return await told(await tx.getRepository(activity_approval_js_1.ActivityApproval).save({ ...base, approver }), participation, context);
|
|
57
|
+
}
|
|
58
|
+
/** The seat is told its turn - every row made here is one (ADR-0164). */
|
|
59
|
+
async function told(approval, participation, context) {
|
|
60
|
+
await (0, approval_notice_js_1.noticeApproval)(context, { kind: participation === 'reference' ? 'reference' : 'request', approvalId: approval.id });
|
|
61
|
+
return approval;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 이번에 알려야 할 참조들의 행을 만든다 — **하나가 실패해도 결재를 세우지 않는다.**
|
|
65
|
+
*
|
|
66
|
+
* 참조는 막지 않는 자격이다. 그런데 참조자를 못 찾아 던지면 그 예외가 상신·승인을 통째로 물린다 —
|
|
67
|
+
* 막지 않기로 한 것이 막게 된다.
|
|
68
|
+
*
|
|
69
|
+
* 그래서 실패를 삼키지 않되 **던지지도 않는다.** 못 만든 참조를 이유와 함께 돌려주고, 부르는 쪽이
|
|
70
|
+
* 그것을 기록한다.
|
|
71
|
+
*/
|
|
72
|
+
async function createReferences(args, context) {
|
|
73
|
+
const created = [];
|
|
74
|
+
const failed = [];
|
|
75
|
+
for (const { item, order } of args.references) {
|
|
76
|
+
try {
|
|
77
|
+
created.push(await createApproval({ item, order, participation: 'reference', activityThread: args.activityThread, transaction: 'notify' }, context));
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
failed.push({ order, reason: String(e?.message ?? e) });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return { created, failed };
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=create-approval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-approval.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/create-approval.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * **결재선 한 항목을 실제 행으로 만든다** — 한 자리.\n *\n * ── 왜 뺐나 (2026-09-01) ─────────────────────────────────────────────────\n * 같은 열다섯 줄이 두 파일에 있었다 — `submit.ts`(첫 결재자)와 `approve.ts`(다음 결재자). 역할로 걸린\n * 경우와 사람으로 걸린 경우를 가르고, 못 찾으면 던지고, 행을 만든다.\n *\n * 참조까지 넣으면 **세 벌**이 된다. 그때 한쪽만 고쳐지는 날이 오고, 그러면 어떤 자격의 결재자만\n * 조용히 안 만들어진다 — 오류가 안 나고 결재가 안 걸린다.\n */\nimport { Role } from '@things-factory/auth-base'\nimport type { ApprovalLineItem } from '@things-factory/organization'\nimport { OrgMemberTargetType } from '@things-factory/organization'\n\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval.js'\nimport type { ActivityThread } from '../../service/activity-thread/activity-thread.js'\nimport { getSystemUserFromOrgMemberItem } from '../common.js'\nimport { seatRoleId } from '../../service/work-door/approval-line-standing.js'\nimport { noticeApproval } from '../../service/approval-notice/approval-notice.js'\n\n/** 이 항목이 무슨 자격으로 서나 — 행에도 적는다(목록 질의가 참조를 걸러야 한다). */\nexport type Participation = 'approval' | 'reference'\n\n/**\n * 결재선 항목 하나로 행을 만든다.\n *\n * 역할로 걸린 것은 `approverRole` 만 채워지고 `approver` 는 비어 있다 — 그 역할을 가진 사람 여럿이 같은\n * 건을 본다. 처리하는 사람이 정해지는 것은 누른 순간이다(§`approve.ts`).\n */\nexport async function createApproval(\n args: {\n item: ApprovalLineItem\n order: number\n participation: Participation\n activityThread: ActivityThread\n /** 이 행이 왜 생겼나 — `submit` · `escalate` · `notify`. */\n transaction: string\n },\n context: ResolverContext\n): Promise<ActivityApproval> {\n const { domain, user, tx } = context.state\n const { item, order, participation, activityThread, transaction } = args\n\n const base = {\n domain,\n activityThread,\n round: activityThread.round,\n order,\n judgment: ActivityApprovalJudgment.Pending,\n participation,\n transaction,\n creator: user,\n updater: user\n }\n\n if (item.type == OrgMemberTargetType.Role) {\n const roleId = seatRoleId(item)\n if (!roleId) {\n throw new Error(context.t('error.approver role is not set on the approval line', { order }))\n }\n\n const approverRole = await tx.getRepository(Role).findOneBy({ id: roleId })\n if (!approverRole) {\n throw new Error(context.t('error.approver role not found', { order }))\n }\n\n return await told(await tx.getRepository(ActivityApproval).save({ ...base, approverRole } as any), participation, context)\n }\n\n const approver = await getSystemUserFromOrgMemberItem(item, context)\n if (!approver) {\n throw new Error(context.t('error.approver is not set on the approval line', { order }))\n }\n\n return await told(await tx.getRepository(ActivityApproval).save({ ...base, approver } as any), participation, context)\n}\n\n/** The seat is told its turn - every row made here is one (ADR-0164). */\nasync function told(approval: ActivityApproval, participation: Participation, context: ResolverContext): Promise<ActivityApproval> {\n await noticeApproval(context, { kind: participation === 'reference' ? 'reference' : 'request', approvalId: approval.id })\n return approval\n}\n\n/**\n * 이번에 알려야 할 참조들의 행을 만든다 — **하나가 실패해도 결재를 세우지 않는다.**\n *\n * 참조는 막지 않는 자격이다. 그런데 참조자를 못 찾아 던지면 그 예외가 상신·승인을 통째로 물린다 —\n * 막지 않기로 한 것이 막게 된다.\n *\n * 그래서 실패를 삼키지 않되 **던지지도 않는다.** 못 만든 참조를 이유와 함께 돌려주고, 부르는 쪽이\n * 그것을 기록한다.\n */\nexport async function createReferences(\n args: {\n references: { item: ApprovalLineItem; order: number }[]\n activityThread: ActivityThread\n },\n context: ResolverContext\n): Promise<{ created: ActivityApproval[]; failed: { order: number; reason: string }[] }> {\n const created: ActivityApproval[] = []\n const failed: { order: number; reason: string }[] = []\n\n for (const { item, order } of args.references) {\n try {\n created.push(\n await createApproval(\n { item, order, participation: 'reference', activityThread: args.activityThread, transaction: 'notify' },\n context\n )\n )\n } catch (e: any) {\n failed.push({ order, reason: String(e?.message ?? e) })\n }\n }\n\n return { created, failed }\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ObjectRef } from '@things-factory/shell';
|
|
2
|
+
import { ActivityApproval } from '../../service/activity-approval/activity-approval.js';
|
|
3
|
+
/**
|
|
4
|
+
* 결재를 다른 사람에게 넘긴다.
|
|
5
|
+
*
|
|
6
|
+
* ── 넘긴 사람의 행은 끝내고, 받은 사람의 행을 새로 만든다 ──────────────────
|
|
7
|
+
* 두 행이 필요하다. 넘긴 기록이 남아야 「누가 왜 넘겼나」에 답할 수 있고, 받은 사람에게 대기 건이
|
|
8
|
+
* 서야 결재가 이어진다.
|
|
9
|
+
*
|
|
10
|
+
* 앞서는 두 번 저장하면서 **둘 다 같은 행을 덮었다.** `{ ...activityApproval }` 이 `id` 까지 퍼뜨려서
|
|
11
|
+
* TypeORM 이 새로 넣지 않고 고쳤기 때문이다. 그래서 위임하면
|
|
12
|
+
*
|
|
13
|
+
* 받은 사람에게 대기 건이 안 생기고
|
|
14
|
+
* 원본은 `delegated` 로 끝나고
|
|
15
|
+
* 스레드는 `submitted` 인 채로 멈춘다
|
|
16
|
+
*
|
|
17
|
+
* **결재가 죽었다.** 오류는 안 났다.
|
|
18
|
+
*/
|
|
19
|
+
export declare function delegate({ id, to, comment }: {
|
|
20
|
+
id: string;
|
|
21
|
+
to: ObjectRef;
|
|
22
|
+
comment: string;
|
|
23
|
+
}, context: ResolverContext): Promise<ActivityApproval>;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.delegate = delegate;
|
|
4
|
+
const auth_base_1 = require("@things-factory/auth-base");
|
|
5
|
+
const opinion_js_1 = require("./opinion.js");
|
|
6
|
+
const activity_approval_js_1 = require("../../service/activity-approval/activity-approval.js");
|
|
7
|
+
const check_authority_js_1 = require("./check-authority.js");
|
|
8
|
+
const claim_js_1 = require("./claim.js");
|
|
9
|
+
const delegation_js_1 = require("./delegation.js");
|
|
10
|
+
const approval_notice_js_1 = require("../../service/approval-notice/approval-notice.js");
|
|
11
|
+
/**
|
|
12
|
+
* 결재를 다른 사람에게 넘긴다.
|
|
13
|
+
*
|
|
14
|
+
* ── 넘긴 사람의 행은 끝내고, 받은 사람의 행을 새로 만든다 ──────────────────
|
|
15
|
+
* 두 행이 필요하다. 넘긴 기록이 남아야 「누가 왜 넘겼나」에 답할 수 있고, 받은 사람에게 대기 건이
|
|
16
|
+
* 서야 결재가 이어진다.
|
|
17
|
+
*
|
|
18
|
+
* 앞서는 두 번 저장하면서 **둘 다 같은 행을 덮었다.** `{ ...activityApproval }` 이 `id` 까지 퍼뜨려서
|
|
19
|
+
* TypeORM 이 새로 넣지 않고 고쳤기 때문이다. 그래서 위임하면
|
|
20
|
+
*
|
|
21
|
+
* 받은 사람에게 대기 건이 안 생기고
|
|
22
|
+
* 원본은 `delegated` 로 끝나고
|
|
23
|
+
* 스레드는 `submitted` 인 채로 멈춘다
|
|
24
|
+
*
|
|
25
|
+
* **결재가 죽었다.** 오류는 안 났다.
|
|
26
|
+
*/
|
|
27
|
+
async function delegate({ id, to, comment }, context) {
|
|
28
|
+
const { domain, user, tx } = context.state;
|
|
29
|
+
var repository = tx.getRepository(activity_approval_js_1.ActivityApproval);
|
|
30
|
+
var activityApproval = await repository.findOne({
|
|
31
|
+
where: { domain: { id: domain.id }, id },
|
|
32
|
+
relations: ['domain', 'activityThread']
|
|
33
|
+
});
|
|
34
|
+
if (!activityApproval) {
|
|
35
|
+
throw new Error(context.t('error.activity-approval not found', {
|
|
36
|
+
activityApproval: id
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
await (0, check_authority_js_1.checkAuthority)(activityApproval, context);
|
|
40
|
+
/*
|
|
41
|
+
Prerequisite of Delegation
|
|
42
|
+
- Previous judgment should be 'pending'
|
|
43
|
+
*/
|
|
44
|
+
if (activityApproval.judgment !== activity_approval_js_1.ActivityApprovalJudgment.Pending) {
|
|
45
|
+
throw new Error(context.t(`error.activity-approval is already terminated`, {
|
|
46
|
+
activityInstance: id,
|
|
47
|
+
actual: activityApproval.judgment
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
const approver = await tx.getRepository(auth_base_1.User).findOne({
|
|
51
|
+
where: { id: to.id, status: auth_base_1.UserStatus.ACTIVATED },
|
|
52
|
+
relations: ['domains']
|
|
53
|
+
});
|
|
54
|
+
if (!approver) {
|
|
55
|
+
throw new Error(context.t(`error.user not found`));
|
|
56
|
+
}
|
|
57
|
+
/* 누구에게 넘길 수 있나 — 판단은 `delegation.ts` 가 한다(시험이 그 파일을 든다). */
|
|
58
|
+
const refusal = (0, delegation_js_1.handOverRefusal)({
|
|
59
|
+
fromUserId: user.id,
|
|
60
|
+
toUserId: approver.id,
|
|
61
|
+
toInDomain: (approver.domains || []).some(one => one.id === domain.id)
|
|
62
|
+
});
|
|
63
|
+
if (refusal) {
|
|
64
|
+
throw Object.assign(new Error(context.t(delegation_js_1.DELEGATION_REFUSAL_KEYS[refusal])), { code: refusal });
|
|
65
|
+
}
|
|
66
|
+
/*
|
|
67
|
+
* **여기서 잡는다.** 위의 검사는 읽은 시점의 것이라 그 사이에 남이 처리할 수 있다. 잡기가 첫 쓰기여야
|
|
68
|
+
* 진 쪽이 다음 결재자를 만들기 전에 물러난다.
|
|
69
|
+
*/
|
|
70
|
+
if (!(await (0, claim_js_1.claimPendingApproval)(tx, activityApproval, activity_approval_js_1.ActivityApprovalJudgment.Delegated))) {
|
|
71
|
+
/* 「이미 끝났다」보다 **그 사람이 할 일**을 말한다 — 목록을 새로 읽으면 지금 상태가 보인다. */
|
|
72
|
+
throw new Error(context.t('error.activity-approval taken by someone else', { activityApproval: id }));
|
|
73
|
+
}
|
|
74
|
+
/*
|
|
75
|
+
* 받은 사람의 대기 건을 **새로 만든다.**
|
|
76
|
+
*
|
|
77
|
+
* `id` 를 퍼뜨리지 않는다 — 퍼뜨리면 원본을 고치는 것이 되고 새 행이 안 생긴다. 차례(`order`)와
|
|
78
|
+
* 차수(`round`)는 같다. 결재선의 같은 단계이고 사람만 바뀐 것이다.
|
|
79
|
+
*/
|
|
80
|
+
const handedOn = await repository.save(repository.create({
|
|
81
|
+
domain: activityApproval.domain,
|
|
82
|
+
activityThread: activityApproval.activityThread,
|
|
83
|
+
originalApproval: activityApproval,
|
|
84
|
+
round: activityApproval.round,
|
|
85
|
+
order: activityApproval.order,
|
|
86
|
+
/*
|
|
87
|
+
* The seat keeps what it is. Left out, an empty participation reads as approval, so a reference
|
|
88
|
+
* handed on became a judging seat in the receiver's pending list that the line refused to let them
|
|
89
|
+
* approve, and it left their reference list.
|
|
90
|
+
*/
|
|
91
|
+
participation: activityApproval.participation,
|
|
92
|
+
judgment: activity_approval_js_1.ActivityApprovalJudgment.Pending,
|
|
93
|
+
transaction: 'delegate',
|
|
94
|
+
...(0, opinion_js_1.stampedComment)(comment),
|
|
95
|
+
approver,
|
|
96
|
+
creator: user,
|
|
97
|
+
updater: user
|
|
98
|
+
}));
|
|
99
|
+
/* The receiver is told the seat is theirs now (ADR-0164). */
|
|
100
|
+
await (0, approval_notice_js_1.noticeApproval)(context, { kind: 'delegated', approvalId: handedOn.id });
|
|
101
|
+
/* 넘긴 사람의 행을 끝낸다. 의견은 `comment` 에 남긴다 — `reason` 은 이 표에 없는 칸이다. */
|
|
102
|
+
const result = await repository.save({
|
|
103
|
+
...activityApproval,
|
|
104
|
+
judgment: activity_approval_js_1.ActivityApprovalJudgment.Delegated,
|
|
105
|
+
...(0, opinion_js_1.stampedComment)(comment),
|
|
106
|
+
transaction: 'delegate',
|
|
107
|
+
updater: user,
|
|
108
|
+
terminator: user,
|
|
109
|
+
terminatedAt: new Date()
|
|
110
|
+
});
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=delegate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/delegate.ts"],"names":[],"mappings":"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","sourcesContent":["import { User, UserStatus } from '@things-factory/auth-base'\nimport { stampedComment } from './opinion.js'\nimport { ObjectRef } from '@things-factory/shell'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval.js'\nimport { checkAuthority } from './check-authority.js'\nimport { claimPendingApproval } from './claim.js'\nimport { DELEGATION_REFUSAL_KEYS, handOverRefusal } from './delegation.js'\nimport { noticeApproval } from '../../service/approval-notice/approval-notice.js'\n\n/**\n * 결재를 다른 사람에게 넘긴다.\n *\n * ── 넘긴 사람의 행은 끝내고, 받은 사람의 행을 새로 만든다 ──────────────────\n * 두 행이 필요하다. 넘긴 기록이 남아야 「누가 왜 넘겼나」에 답할 수 있고, 받은 사람에게 대기 건이\n * 서야 결재가 이어진다.\n *\n * 앞서는 두 번 저장하면서 **둘 다 같은 행을 덮었다.** `{ ...activityApproval }` 이 `id` 까지 퍼뜨려서\n * TypeORM 이 새로 넣지 않고 고쳤기 때문이다. 그래서 위임하면\n *\n * 받은 사람에게 대기 건이 안 생기고\n * 원본은 `delegated` 로 끝나고\n * 스레드는 `submitted` 인 채로 멈춘다\n *\n * **결재가 죽었다.** 오류는 안 났다.\n */\nexport async function delegate(\n { id, to, comment }: { id: string; to: ObjectRef; comment: string },\n context: ResolverContext\n): Promise<ActivityApproval> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ActivityApproval)\n\n var activityApproval = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['domain', 'activityThread']\n })\n\n if (!activityApproval) {\n throw new Error(\n context.t('error.activity-approval not found', {\n activityApproval: id\n })\n )\n }\n\n await checkAuthority(activityApproval, context)\n\n /*\n Prerequisite of Delegation\n - Previous judgment should be 'pending'\n */\n if (activityApproval.judgment !== ActivityApprovalJudgment.Pending) {\n throw new Error(\n context.t(`error.activity-approval is already terminated`, {\n activityInstance: id,\n actual: activityApproval.judgment\n })\n )\n }\n\n const approver = await tx.getRepository(User).findOne({\n where: { id: to.id, status: UserStatus.ACTIVATED },\n relations: ['domains']\n })\n\n if (!approver) {\n throw new Error(context.t(`error.user not found`))\n }\n\n /* 누구에게 넘길 수 있나 — 판단은 `delegation.ts` 가 한다(시험이 그 파일을 든다). */\n const refusal = handOverRefusal({\n fromUserId: user.id,\n toUserId: approver.id,\n toInDomain: (approver.domains || []).some(one => one.id === domain.id)\n })\n\n if (refusal) {\n throw Object.assign(new Error(context.t(DELEGATION_REFUSAL_KEYS[refusal])), { code: refusal })\n }\n\n\n /*\n * **여기서 잡는다.** 위의 검사는 읽은 시점의 것이라 그 사이에 남이 처리할 수 있다. 잡기가 첫 쓰기여야\n * 진 쪽이 다음 결재자를 만들기 전에 물러난다.\n */\n if (!(await claimPendingApproval(tx, activityApproval, ActivityApprovalJudgment.Delegated))) {\n /* 「이미 끝났다」보다 **그 사람이 할 일**을 말한다 — 목록을 새로 읽으면 지금 상태가 보인다. */\n throw new Error(context.t('error.activity-approval taken by someone else', { activityApproval: id }))\n }\n\n /*\n * 받은 사람의 대기 건을 **새로 만든다.**\n *\n * `id` 를 퍼뜨리지 않는다 — 퍼뜨리면 원본을 고치는 것이 되고 새 행이 안 생긴다. 차례(`order`)와\n * 차수(`round`)는 같다. 결재선의 같은 단계이고 사람만 바뀐 것이다.\n */\n const handedOn = await repository.save(\n repository.create({\n domain: activityApproval.domain,\n activityThread: activityApproval.activityThread,\n originalApproval: activityApproval,\n round: activityApproval.round,\n order: activityApproval.order,\n /*\n * The seat keeps what it is. Left out, an empty participation reads as approval, so a reference\n * handed on became a judging seat in the receiver's pending list that the line refused to let them\n * approve, and it left their reference list.\n */\n participation: activityApproval.participation,\n judgment: ActivityApprovalJudgment.Pending,\n transaction: 'delegate',\n ...stampedComment(comment),\n approver,\n creator: user,\n updater: user\n })\n )\n\n /* The receiver is told the seat is theirs now (ADR-0164). */\n await noticeApproval(context, { kind: 'delegated', approvalId: handedOn.id })\n\n /* 넘긴 사람의 행을 끝낸다. 의견은 `comment` 에 남긴다 — `reason` 은 이 표에 없는 칸이다. */\n const result = await repository.save({\n ...activityApproval,\n judgment: ActivityApprovalJudgment.Delegated,\n ...stampedComment(comment),\n transaction: 'delegate',\n updater: user,\n terminator: user,\n terminatedAt: new Date()\n })\n\n return result\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* May this seat be handed to that person? Kept free of entities so it can be tested.
|
|
3
|
+
*
|
|
4
|
+
* Delegation moves a seat on the approval line from one person to another. It must not change what
|
|
5
|
+
* the seat is, and it must not hand it to someone who cannot sit in it:
|
|
6
|
+
*
|
|
7
|
+
* delegate-to-self handing a seat to its own holder changes nothing but the history
|
|
8
|
+
* delegate-outside-domain a person of another tenant would hold a case nobody here can act on,
|
|
9
|
+
* and their inbox, which reads their own domain, would never show it
|
|
10
|
+
*
|
|
11
|
+
* Whoever raised the case may be handed a seat: the one who raises a case may judge it (2026-10-23,
|
|
12
|
+
* ADR-0052 ② withdrawn).
|
|
13
|
+
*/
|
|
14
|
+
export type DelegationRefusal = 'delegate-to-self' | 'delegate-outside-domain';
|
|
15
|
+
export declare const DELEGATION_REFUSAL_KEYS: Record<DelegationRefusal, string>;
|
|
16
|
+
/** A hand-over of an approval seat or a thread: not to its own holder, and not out of this tenant. */
|
|
17
|
+
export declare function handOverRefusal({ fromUserId, toUserId, toInDomain }: {
|
|
18
|
+
fromUserId: string;
|
|
19
|
+
toUserId: string;
|
|
20
|
+
toInDomain: boolean;
|
|
21
|
+
}): DelegationRefusal | null;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DELEGATION_REFUSAL_KEYS = void 0;
|
|
4
|
+
exports.handOverRefusal = handOverRefusal;
|
|
5
|
+
exports.DELEGATION_REFUSAL_KEYS = {
|
|
6
|
+
'delegate-to-self': 'error.activity-approval delegate to self',
|
|
7
|
+
'delegate-outside-domain': 'error.activity-approval delegate outside domain'
|
|
8
|
+
};
|
|
9
|
+
/** A hand-over of an approval seat or a thread: not to its own holder, and not out of this tenant. */
|
|
10
|
+
function handOverRefusal({ fromUserId, toUserId, toInDomain }) {
|
|
11
|
+
if (!toUserId || toUserId === fromUserId)
|
|
12
|
+
return 'delegate-to-self';
|
|
13
|
+
if (!toInDomain)
|
|
14
|
+
return 'delegate-outside-domain';
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=delegation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegation.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/delegation.ts"],"names":[],"mappings":";;;AAqBA,0CAaC;AAnBY,QAAA,uBAAuB,GAAsC;IACxE,kBAAkB,EAAE,0CAA0C;IAC9D,yBAAyB,EAAE,iDAAiD;CAC7E,CAAA;AAED,sGAAsG;AACtG,SAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,QAAQ,EACR,UAAU,EAKX;IACC,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,UAAU;QAAE,OAAO,kBAAkB,CAAA;IACnE,IAAI,CAAC,UAAU;QAAE,OAAO,yBAAyB,CAAA;IAEjD,OAAO,IAAI,CAAA;AACb,CAAC","sourcesContent":["/**\n * May this seat be handed to that person? Kept free of entities so it can be tested.\n *\n * Delegation moves a seat on the approval line from one person to another. It must not change what\n * the seat is, and it must not hand it to someone who cannot sit in it:\n *\n * delegate-to-self handing a seat to its own holder changes nothing but the history\n * delegate-outside-domain a person of another tenant would hold a case nobody here can act on,\n * and their inbox, which reads their own domain, would never show it\n *\n * Whoever raised the case may be handed a seat: the one who raises a case may judge it (2026-10-23,\n * ADR-0052 ② withdrawn).\n */\nexport type DelegationRefusal = 'delegate-to-self' | 'delegate-outside-domain'\n\nexport const DELEGATION_REFUSAL_KEYS: Record<DelegationRefusal, string> = {\n 'delegate-to-self': 'error.activity-approval delegate to self',\n 'delegate-outside-domain': 'error.activity-approval delegate outside domain'\n}\n\n/** A hand-over of an approval seat or a thread: not to its own holder, and not out of this tenant. */\nexport function handOverRefusal({\n fromUserId,\n toUserId,\n toInDomain\n}: {\n fromUserId: string\n toUserId: string\n toInDomain: boolean\n}): DelegationRefusal | null {\n if (!toUserId || toUserId === fromUserId) return 'delegate-to-self'\n if (!toInDomain) return 'delegate-outside-domain'\n\n return null\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 의견을 지금 말한 것으로 적는다 — **빈 의견에는 시각을 찍지 않는다.**
|
|
3
|
+
*
|
|
4
|
+
* 말하지 않은 것에 시각을 찍으면 「통지받고 말하지 않았다」와 「말했다」가 구별되지 않는다. 침묵은
|
|
5
|
+
* 동의도 반대도 아니고, 그 사실이 화면에 그대로 보여야 한다.
|
|
6
|
+
*/
|
|
7
|
+
export declare function stampedComment(comment: string | undefined | null): {
|
|
8
|
+
comment?: string;
|
|
9
|
+
commentedAt?: Date;
|
|
10
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* **의견과 그 시각은 함께 적힌다** — 한 자리에서.
|
|
4
|
+
*
|
|
5
|
+
* ── 왜 시각이 필요한가 (2026-09-02, UX 레인 물음) ──────────────────────────
|
|
6
|
+
* 화면이 「결정이 끝난 뒤에 달린 의견」을 따로 보여 주려 했다. 참조는 결재를 막지 않으므로 늦게 올 수
|
|
7
|
+
* 있고, 그 사실을 표시하지 않으면 사람은 그 의견이 결정에 반영된 줄로 읽는다.
|
|
8
|
+
*
|
|
9
|
+
* 그런데 그 판단에 쓸 값이 없었다. 그래서 `updatedAt > terminatedAt` 으로 추론하려 했는데 **그것은
|
|
10
|
+
* 언제나 참이다.**
|
|
11
|
+
*
|
|
12
|
+
* terminatedAt 닫는 코드가 `new Date()` 로 만든다 — 저장 전
|
|
13
|
+
* updatedAt `@UpdateDateColumn` 이 DB 에 쓰는 순간 찍는다 — 저장 시점
|
|
14
|
+
*
|
|
15
|
+
* 두 값이 몇 밀리초 차이로 늘 어긋나서, 닫힌 참조가 **전부** 「결정 후 의견」으로 보인다. 조용히,
|
|
16
|
+
* 그리고 정확히 반대로.
|
|
17
|
+
*
|
|
18
|
+
* 그래서 사실에 집을 준다. 의견을 언제 말했나는 파생으로 알 수 없다.
|
|
19
|
+
*
|
|
20
|
+
* ── 왜 여섯 자리를 한 함수로 모으나 ────────────────────────────────────────
|
|
21
|
+
* 의견을 적는 곳이 여섯이다(저장·승인·반려·위임 둘·중단). 시각을 각자 찍게 두면 한 곳이 빠지고,
|
|
22
|
+
* 빠진 그 자리의 의견만 **시각 없이** 남는다. 화면은 그것을 「의견 없음」으로 읽는다.
|
|
23
|
+
*/
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.stampedComment = stampedComment;
|
|
26
|
+
/**
|
|
27
|
+
* 의견을 지금 말한 것으로 적는다 — **빈 의견에는 시각을 찍지 않는다.**
|
|
28
|
+
*
|
|
29
|
+
* 말하지 않은 것에 시각을 찍으면 「통지받고 말하지 않았다」와 「말했다」가 구별되지 않는다. 침묵은
|
|
30
|
+
* 동의도 반대도 아니고, 그 사실이 화면에 그대로 보여야 한다.
|
|
31
|
+
*/
|
|
32
|
+
function stampedComment(comment) {
|
|
33
|
+
const said = typeof comment === 'string' ? comment.trim() : '';
|
|
34
|
+
if (!said) {
|
|
35
|
+
/*
|
|
36
|
+
* 빈 값을 그대로 넘긴다 — 앞서 있던 의견을 지우는 것도 사람의 뜻일 수 있다. 다만 시각은 지운다.
|
|
37
|
+
* 그러지 않으면 「의견은 없는데 말한 시각은 있다」가 남는다.
|
|
38
|
+
*/
|
|
39
|
+
return { comment: comment ?? undefined, commentedAt: undefined };
|
|
40
|
+
}
|
|
41
|
+
return { comment: said, commentedAt: new Date() };
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=opinion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opinion.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/opinion.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;AAQH,wCAUC;AAhBD;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,OAAkC;IAC/D,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV;;;WAGG;QACH,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAA;IAClE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,EAAE,CAAA;AACnD,CAAC","sourcesContent":["/*\n * **의견과 그 시각은 함께 적힌다** — 한 자리에서.\n *\n * ── 왜 시각이 필요한가 (2026-09-02, UX 레인 물음) ──────────────────────────\n * 화면이 「결정이 끝난 뒤에 달린 의견」을 따로 보여 주려 했다. 참조는 결재를 막지 않으므로 늦게 올 수\n * 있고, 그 사실을 표시하지 않으면 사람은 그 의견이 결정에 반영된 줄로 읽는다.\n *\n * 그런데 그 판단에 쓸 값이 없었다. 그래서 `updatedAt > terminatedAt` 으로 추론하려 했는데 **그것은\n * 언제나 참이다.**\n *\n * terminatedAt 닫는 코드가 `new Date()` 로 만든다 — 저장 전\n * updatedAt `@UpdateDateColumn` 이 DB 에 쓰는 순간 찍는다 — 저장 시점\n *\n * 두 값이 몇 밀리초 차이로 늘 어긋나서, 닫힌 참조가 **전부** 「결정 후 의견」으로 보인다. 조용히,\n * 그리고 정확히 반대로.\n *\n * 그래서 사실에 집을 준다. 의견을 언제 말했나는 파생으로 알 수 없다.\n *\n * ── 왜 여섯 자리를 한 함수로 모으나 ────────────────────────────────────────\n * 의견을 적는 곳이 여섯이다(저장·승인·반려·위임 둘·중단). 시각을 각자 찍게 두면 한 곳이 빠지고,\n * 빠진 그 자리의 의견만 **시각 없이** 남는다. 화면은 그것을 「의견 없음」으로 읽는다.\n */\n\n/**\n * 의견을 지금 말한 것으로 적는다 — **빈 의견에는 시각을 찍지 않는다.**\n *\n * 말하지 않은 것에 시각을 찍으면 「통지받고 말하지 않았다」와 「말했다」가 구별되지 않는다. 침묵은\n * 동의도 반대도 아니고, 그 사실이 화면에 그대로 보여야 한다.\n */\nexport function stampedComment(comment: string | undefined | null): { comment?: string; commentedAt?: Date } {\n const said = typeof comment === 'string' ? comment.trim() : ''\n if (!said) {\n /*\n * 빈 값을 그대로 넘긴다 — 앞서 있던 의견을 지우는 것도 사람의 뜻일 수 있다. 다만 시각은 지운다.\n * 그러지 않으면 「의견은 없는데 말한 시각은 있다」가 남는다.\n */\n return { comment: comment ?? undefined, commentedAt: undefined }\n }\n return { comment: said, commentedAt: new Date() }\n}\n"]}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.reject = reject;
|
|
4
|
+
const activity_thread_js_1 = require("../../service/activity-thread/activity-thread.js");
|
|
5
|
+
const opinion_js_1 = require("./opinion.js");
|
|
6
|
+
const activity_approval_js_1 = require("../../service/activity-approval/activity-approval.js");
|
|
7
|
+
const common_js_1 = require("../common.js");
|
|
8
|
+
const check_authority_js_1 = require("./check-authority.js");
|
|
9
|
+
const claim_js_1 = require("./claim.js");
|
|
10
|
+
const approval_line_js_1 = require("./approval-line.js");
|
|
11
|
+
const approval_notice_js_1 = require("../../service/approval-notice/approval-notice.js");
|
|
12
|
+
async function reject({ id, comment }, context) {
|
|
13
|
+
const { domain, user, tx } = context.state;
|
|
14
|
+
var repository = tx.getRepository(activity_approval_js_1.ActivityApproval);
|
|
15
|
+
var activityApproval = await repository.findOne({
|
|
16
|
+
where: { domain: { id: domain.id }, id },
|
|
17
|
+
/*
|
|
18
|
+
* The approval line comes along, because the refusal below asks the line whether this seat is a
|
|
19
|
+
* reference. approve() reads the thread in a separate query to reach the same value; this
|
|
20
|
+
* function already holds the thread, so it takes one more level instead.
|
|
21
|
+
*/
|
|
22
|
+
relations: ['activityThread', 'activityThread.activityInstance']
|
|
23
|
+
});
|
|
24
|
+
if (!activityApproval) {
|
|
25
|
+
throw new Error(context.t('error.activity-approval not found', {
|
|
26
|
+
activityApproval: id
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
await (0, check_authority_js_1.checkAuthority)(activityApproval, context);
|
|
30
|
+
/*
|
|
31
|
+
Prerequisite of Rejection
|
|
32
|
+
- Previous judgment should be 'pending'
|
|
33
|
+
*/
|
|
34
|
+
if (activityApproval.judgment !== activity_approval_js_1.ActivityApprovalJudgment.Pending) {
|
|
35
|
+
throw new Error(context.t(`error.activity-approval is already terminated`, {
|
|
36
|
+
activityInstance: id,
|
|
37
|
+
actual: activityApproval.judgment
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
/*
|
|
41
|
+
* A reference does not judge, and rejecting carries more than approving.
|
|
42
|
+
*
|
|
43
|
+
* This function did not look at the approval line at all. A reference pressing reject had it
|
|
44
|
+
* recorded as a real rejection and the thread closed as Rejected. Activities that set
|
|
45
|
+
* rejectionIsFinal — the twin actuation and the disposition approval — cannot be restarted, so
|
|
46
|
+
* someone seated to comment closed the case for good.
|
|
47
|
+
*
|
|
48
|
+
* This stands before claimPendingApproval, the first write. Throwing after the claim would leave
|
|
49
|
+
* the row already stamped as rejected.
|
|
50
|
+
*/
|
|
51
|
+
if ((0, approval_line_js_1.isReferenceOrder)(activityApproval.activityThread?.activityInstance?.approvalLine, activityApproval.order)) {
|
|
52
|
+
throw new Error(context.t('error.activity-approval is reference only'));
|
|
53
|
+
}
|
|
54
|
+
/*
|
|
55
|
+
* **여기서 잡는다.** 위의 검사는 읽은 시점의 것이라 그 사이에 남이 처리할 수 있다. 잡기가 첫 쓰기여야
|
|
56
|
+
* 진 쪽이 다음 결재자를 만들기 전에 물러난다.
|
|
57
|
+
*/
|
|
58
|
+
if (!(await (0, claim_js_1.claimPendingApproval)(tx, activityApproval, activity_approval_js_1.ActivityApprovalJudgment.Rejected))) {
|
|
59
|
+
/* 「이미 끝났다」보다 **그 사람이 할 일**을 말한다 — 목록을 새로 읽으면 지금 상태가 보인다. */
|
|
60
|
+
throw new Error(context.t('error.activity-approval taken by someone else', { activityApproval: id }));
|
|
61
|
+
}
|
|
62
|
+
var result = await repository.save({
|
|
63
|
+
...activityApproval,
|
|
64
|
+
judgment: activity_approval_js_1.ActivityApprovalJudgment.Rejected,
|
|
65
|
+
...(0, opinion_js_1.stampedComment)(comment),
|
|
66
|
+
transaction: 'reject',
|
|
67
|
+
/*
|
|
68
|
+
* **누가 처리했는지 남긴다.**
|
|
69
|
+
*
|
|
70
|
+
* 역할로 걸린 결재는 `approver` 가 비어 있고 `approverRole` 만 있다. 처리해도 그 자리가 비어 있으면
|
|
71
|
+
* 두 가지가 함께 무너진다 — 그 역할을 가진 사람들의 **대기 목록에 영원히 남고**(`approver IS NULL`
|
|
72
|
+
* 로 걸리므로), 정작 처리한 사람의 **완료 목록에는 안 나온다**(`approver = 나` 로 거르므로).
|
|
73
|
+
*
|
|
74
|
+
* 그리고 결재 이력에서 「누가 승인했나」는 역할이 아니라 사람이어야 한다.
|
|
75
|
+
*/
|
|
76
|
+
approver: activityApproval.approver ?? user,
|
|
77
|
+
updater: user,
|
|
78
|
+
terminatedAt: new Date(),
|
|
79
|
+
terminator: user
|
|
80
|
+
});
|
|
81
|
+
var activityThread = await tx.getRepository(activity_thread_js_1.ActivityThread).save({
|
|
82
|
+
...activityApproval.activityThread,
|
|
83
|
+
transaction: 'reject',
|
|
84
|
+
reason: comment,
|
|
85
|
+
state: activity_thread_js_1.ActivityThreadStatus.Rejected,
|
|
86
|
+
updater: user
|
|
87
|
+
});
|
|
88
|
+
/* The requester is told it came back (ADR-0164). */
|
|
89
|
+
await (0, approval_notice_js_1.noticeApproval)(context, { kind: 'rejected', approvalId: result.id });
|
|
90
|
+
await (0, common_js_1.updateActivityInstanceState)(activityApproval.activityThread.activityInstanceId, { causedBy: [activityThread] }, context);
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=reject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reject.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/reject.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActivityThread, ActivityThreadStatus } from '../../service/activity-thread/activity-thread.js'\nimport { stampedComment } from './opinion.js'\nimport { ActivityApproval, ActivityApprovalJudgment } from '../../service/activity-approval/activity-approval.js'\nimport { updateActivityInstanceState } from '../common.js'\nimport { checkAuthority } from './check-authority.js'\nimport { claimPendingApproval } from './claim.js'\nimport { isReferenceOrder } from './approval-line.js'\nimport { noticeApproval } from '../../service/approval-notice/approval-notice.js'\n\nexport async function reject(\n { id, comment }: { id: string; comment: string },\n context: ResolverContext\n): Promise<ActivityApproval> {\n const { domain, user, tx } = context.state\n\n var repository = tx.getRepository(ActivityApproval)\n\n var activityApproval = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n /*\n * The approval line comes along, because the refusal below asks the line whether this seat is a\n * reference. approve() reads the thread in a separate query to reach the same value; this\n * function already holds the thread, so it takes one more level instead.\n */\n relations: ['activityThread', 'activityThread.activityInstance']\n })\n\n if (!activityApproval) {\n throw new Error(\n context.t('error.activity-approval not found', {\n activityApproval: id\n })\n )\n }\n\n await checkAuthority(activityApproval, context)\n\n /* \n Prerequisite of Rejection\n - Previous judgment should be 'pending'\n */\n if (activityApproval.judgment !== ActivityApprovalJudgment.Pending) {\n throw new Error(\n context.t(`error.activity-approval is already terminated`, {\n activityInstance: id,\n actual: activityApproval.judgment\n })\n )\n }\n\n\n /*\n * A reference does not judge, and rejecting carries more than approving.\n *\n * This function did not look at the approval line at all. A reference pressing reject had it\n * recorded as a real rejection and the thread closed as Rejected. Activities that set\n * rejectionIsFinal — the twin actuation and the disposition approval — cannot be restarted, so\n * someone seated to comment closed the case for good.\n *\n * This stands before claimPendingApproval, the first write. Throwing after the claim would leave\n * the row already stamped as rejected.\n */\n if (isReferenceOrder(activityApproval.activityThread?.activityInstance?.approvalLine, activityApproval.order)) {\n throw new Error(context.t('error.activity-approval is reference only'))\n }\n\n /*\n * **여기서 잡는다.** 위의 검사는 읽은 시점의 것이라 그 사이에 남이 처리할 수 있다. 잡기가 첫 쓰기여야\n * 진 쪽이 다음 결재자를 만들기 전에 물러난다.\n */\n if (!(await claimPendingApproval(tx, activityApproval, ActivityApprovalJudgment.Rejected))) {\n /* 「이미 끝났다」보다 **그 사람이 할 일**을 말한다 — 목록을 새로 읽으면 지금 상태가 보인다. */\n throw new Error(context.t('error.activity-approval taken by someone else', { activityApproval: id }))\n }\n\n var result = await repository.save({\n ...activityApproval,\n judgment: ActivityApprovalJudgment.Rejected,\n ...stampedComment(comment),\n transaction: 'reject',\n /*\n * **누가 처리했는지 남긴다.**\n *\n * 역할로 걸린 결재는 `approver` 가 비어 있고 `approverRole` 만 있다. 처리해도 그 자리가 비어 있으면\n * 두 가지가 함께 무너진다 — 그 역할을 가진 사람들의 **대기 목록에 영원히 남고**(`approver IS NULL`\n * 로 걸리므로), 정작 처리한 사람의 **완료 목록에는 안 나온다**(`approver = 나` 로 거르므로).\n *\n * 그리고 결재 이력에서 「누가 승인했나」는 역할이 아니라 사람이어야 한다.\n */\n approver: activityApproval.approver ?? user,\n updater: user,\n terminatedAt: new Date(),\n terminator: user\n })\n\n var activityThread = await tx.getRepository(ActivityThread).save({\n ...activityApproval.activityThread,\n transaction: 'reject',\n reason: comment,\n state: ActivityThreadStatus.Rejected,\n updater: user\n })\n\n /* The requester is told it came back (ADR-0164). */\n await noticeApproval(context, { kind: 'rejected', approvalId: result.id })\n\n await updateActivityInstanceState(\n activityApproval.activityThread.activityInstanceId,\n { causedBy: [activityThread] },\n context\n )\n\n return result\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ApprovalLineItem } from '@things-factory/organization';
|
|
2
|
+
import type { JudgeableSeat } from './seat-standing.js';
|
|
3
|
+
/**
|
|
4
|
+
* 결재선을 「자리마다 누가 설 수 있나」로 푼다 — **가져오는 일만 한다.**
|
|
5
|
+
*
|
|
6
|
+
* 판단은 `seat-standing.ts` 의 `judgeSeatsStand` 가 든다. 이 파일은 DB 를 읽어서 시험이 못
|
|
7
|
+
* 드는 쪽이고, 그래서 여기에는 규칙을 한 줄도 두지 않는다.
|
|
8
|
+
*
|
|
9
|
+
* ── 자리를 푸는 규칙은 `create-approval.ts` 를 그대로 따른다 ──────────────
|
|
10
|
+
* 실제로 행을 만드는 자리가 거기다. 여기서 다르게 풀면 **여기서는 괜찮다고 하고 거기서는 다른 사람을
|
|
11
|
+
* 앉히는** 일이 난다. 그쪽이 가르는 축은 하나다 — `type` 이 `Role` 이면 역할로 걸고, 아니면 사람
|
|
12
|
+
* 하나로 푼다.
|
|
13
|
+
*
|
|
14
|
+
* ⚠ `getSystemUserFromOrgMemberItem` 은 `Role` 을 사람으로 풀지 않고 거절한다(10-20 전까지는 **그 역할의
|
|
15
|
+
* 첫 사람 하나**를 돌려줬다). 실제 거동은 「그 역할을 가진 사람 누구나」이므로 그 갈래를 먼저 가른다.
|
|
16
|
+
*
|
|
17
|
+
* ── `Myself` 는 올리는 사람이다 ───────────────────────────────────────────
|
|
18
|
+
* 그 자리는 `context.state.user` 로 풀리고, 상신하는 동안 그 사람이 곧 상신자다. 그래서 `Myself` 가
|
|
19
|
+
* 결재 자리에 있으면 **언제나** 자기결재다 — 이 문이 정확히 그것을 잡는다.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveJudgeableSeats(approvalLine: ApprovalLineItem[] | undefined | null, context: ResolverContext): Promise<JudgeableSeat[]>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveJudgeableSeats = resolveJudgeableSeats;
|
|
4
|
+
const auth_base_1 = require("@things-factory/auth-base");
|
|
5
|
+
const organization_1 = require("@things-factory/organization");
|
|
6
|
+
const common_js_1 = require("../common.js");
|
|
7
|
+
const approval_line_js_1 = require("./approval-line.js");
|
|
8
|
+
const approval_line_standing_js_1 = require("../../service/work-door/approval-line-standing.js");
|
|
9
|
+
/**
|
|
10
|
+
* 결재선을 「자리마다 누가 설 수 있나」로 푼다 — **가져오는 일만 한다.**
|
|
11
|
+
*
|
|
12
|
+
* 판단은 `seat-standing.ts` 의 `judgeSeatsStand` 가 든다. 이 파일은 DB 를 읽어서 시험이 못
|
|
13
|
+
* 드는 쪽이고, 그래서 여기에는 규칙을 한 줄도 두지 않는다.
|
|
14
|
+
*
|
|
15
|
+
* ── 자리를 푸는 규칙은 `create-approval.ts` 를 그대로 따른다 ──────────────
|
|
16
|
+
* 실제로 행을 만드는 자리가 거기다. 여기서 다르게 풀면 **여기서는 괜찮다고 하고 거기서는 다른 사람을
|
|
17
|
+
* 앉히는** 일이 난다. 그쪽이 가르는 축은 하나다 — `type` 이 `Role` 이면 역할로 걸고, 아니면 사람
|
|
18
|
+
* 하나로 푼다.
|
|
19
|
+
*
|
|
20
|
+
* ⚠ `getSystemUserFromOrgMemberItem` 은 `Role` 을 사람으로 풀지 않고 거절한다(10-20 전까지는 **그 역할의
|
|
21
|
+
* 첫 사람 하나**를 돌려줬다). 실제 거동은 「그 역할을 가진 사람 누구나」이므로 그 갈래를 먼저 가른다.
|
|
22
|
+
*
|
|
23
|
+
* ── `Myself` 는 올리는 사람이다 ───────────────────────────────────────────
|
|
24
|
+
* 그 자리는 `context.state.user` 로 풀리고, 상신하는 동안 그 사람이 곧 상신자다. 그래서 `Myself` 가
|
|
25
|
+
* 결재 자리에 있으면 **언제나** 자기결재다 — 이 문이 정확히 그것을 잡는다.
|
|
26
|
+
*/
|
|
27
|
+
async function resolveJudgeableSeats(approvalLine, context) {
|
|
28
|
+
const { tx } = context.state;
|
|
29
|
+
const seats = [];
|
|
30
|
+
for (const [index, item] of (approvalLine || []).entries()) {
|
|
31
|
+
/* 참조는 판정하지 않는다. 자리는 차지하므로 차례는 그대로 센다. */
|
|
32
|
+
if (!(0, approval_line_js_1.isApprovalStep)(item)) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const order = index + 1;
|
|
36
|
+
if (item.type == organization_1.OrgMemberTargetType.Role) {
|
|
37
|
+
const roleId = (0, approval_line_standing_js_1.seatRoleId)(item);
|
|
38
|
+
const role = roleId && (await tx.getRepository(auth_base_1.Role).findOne({ where: { id: roleId }, relations: ['users'] }));
|
|
39
|
+
seats.push({
|
|
40
|
+
order,
|
|
41
|
+
kind: 'role',
|
|
42
|
+
couldJudge: (role?.users || []).map(one => one.id),
|
|
43
|
+
name: role?.name || item.approver?.name,
|
|
44
|
+
pointsAt: roleId || undefined
|
|
45
|
+
});
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const approver = await (0, common_js_1.getSystemUserFromOrgMemberItem)(item, context);
|
|
49
|
+
seats.push({
|
|
50
|
+
order,
|
|
51
|
+
kind: 'person',
|
|
52
|
+
couldJudge: approver?.id ? [approver.id] : [],
|
|
53
|
+
name: approver?.name || item.approver?.name,
|
|
54
|
+
/* 안 풀리는 자리는 이름도 비므로, 결재선에 적힌 값이 관리자가 가진 유일한 실마리다. */
|
|
55
|
+
pointsAt: item.approver?.id || item.value || undefined
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return seats;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=resolve-judgeable-seats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-judgeable-seats.js","sourceRoot":"","sources":["../../../server/controllers/activity-approval/resolve-judgeable-seats.ts"],"names":[],"mappings":";;AA2BA,sDA2CC;AAtED,yDAAgD;AAEhD,+DAAkE;AAElE,4CAA6D;AAC7D,yDAAmD;AAEnD,iGAA8E;AAE9E;;;;;;;;;;;;;;;;;GAiBG;AACI,KAAK,UAAU,qBAAqB,CACzC,YAAmD,EACnD,OAAwB;IAExB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC5B,MAAM,KAAK,GAAoB,EAAE,CAAA;IAEjC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3D,yCAAyC;QACzC,IAAI,CAAC,IAAA,iCAAc,EAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,SAAQ;QACV,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,CAAA;QAEvB,IAAI,IAAI,CAAC,IAAI,IAAI,kCAAmB,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAA,sCAAU,EAAC,IAAI,CAAC,CAAA;YAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;YAE9G,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK;gBACL,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClD,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI;gBACvC,QAAQ,EAAE,MAAM,IAAI,SAAS;aAC9B,CAAC,CAAA;YAEF,SAAQ;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAA,0CAA8B,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEpE,KAAK,CAAC,IAAI,CAAC;YACT,KAAK;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;YAC7C,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI;YAC3C,qDAAqD;YACrD,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS;SACvD,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC","sourcesContent":["import { Role } from '@things-factory/auth-base'\nimport type { ApprovalLineItem } from '@things-factory/organization'\nimport { OrgMemberTargetType } from '@things-factory/organization'\n\nimport { getSystemUserFromOrgMemberItem } from '../common.js'\nimport { isApprovalStep } from './approval-line.js'\nimport type { JudgeableSeat } from './seat-standing.js'\nimport { seatRoleId } from '../../service/work-door/approval-line-standing.js'\n\n/**\n * 결재선을 「자리마다 누가 설 수 있나」로 푼다 — **가져오는 일만 한다.**\n *\n * 판단은 `seat-standing.ts` 의 `judgeSeatsStand` 가 든다. 이 파일은 DB 를 읽어서 시험이 못\n * 드는 쪽이고, 그래서 여기에는 규칙을 한 줄도 두지 않는다.\n *\n * ── 자리를 푸는 규칙은 `create-approval.ts` 를 그대로 따른다 ──────────────\n * 실제로 행을 만드는 자리가 거기다. 여기서 다르게 풀면 **여기서는 괜찮다고 하고 거기서는 다른 사람을\n * 앉히는** 일이 난다. 그쪽이 가르는 축은 하나다 — `type` 이 `Role` 이면 역할로 걸고, 아니면 사람\n * 하나로 푼다.\n *\n * ⚠ `getSystemUserFromOrgMemberItem` 은 `Role` 을 사람으로 풀지 않고 거절한다(10-20 전까지는 **그 역할의\n * 첫 사람 하나**를 돌려줬다). 실제 거동은 「그 역할을 가진 사람 누구나」이므로 그 갈래를 먼저 가른다.\n *\n * ── `Myself` 는 올리는 사람이다 ───────────────────────────────────────────\n * 그 자리는 `context.state.user` 로 풀리고, 상신하는 동안 그 사람이 곧 상신자다. 그래서 `Myself` 가\n * 결재 자리에 있으면 **언제나** 자기결재다 — 이 문이 정확히 그것을 잡는다.\n */\nexport async function resolveJudgeableSeats(\n approvalLine: ApprovalLineItem[] | undefined | null,\n context: ResolverContext\n): Promise<JudgeableSeat[]> {\n const { tx } = context.state\n const seats: JudgeableSeat[] = []\n\n for (const [index, item] of (approvalLine || []).entries()) {\n /* 참조는 판정하지 않는다. 자리는 차지하므로 차례는 그대로 센다. */\n if (!isApprovalStep(item)) {\n continue\n }\n\n const order = index + 1\n\n if (item.type == OrgMemberTargetType.Role) {\n const roleId = seatRoleId(item)\n const role = roleId && (await tx.getRepository(Role).findOne({ where: { id: roleId }, relations: ['users'] }))\n\n seats.push({\n order,\n kind: 'role',\n couldJudge: (role?.users || []).map(one => one.id),\n name: role?.name || item.approver?.name,\n pointsAt: roleId || undefined\n })\n\n continue\n }\n\n const approver = await getSystemUserFromOrgMemberItem(item, context)\n\n seats.push({\n order,\n kind: 'person',\n couldJudge: approver?.id ? [approver.id] : [],\n name: approver?.name || item.approver?.name,\n /* 안 풀리는 자리는 이름도 비므로, 결재선에 적힌 값이 관리자가 가진 유일한 실마리다. */\n pointsAt: item.approver?.id || item.value || undefined\n })\n }\n\n return seats\n}\n"]}
|