@riboseinc/paneron-registry-kit 2.2.58 → 2.2.60
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/LICENSE +21 -0
- package/README.adoc +67 -0
- package/compiled/common.js +2 -0
- package/compiled/index.js +42 -0
- package/compiled/item-classes/Tree.js +61 -0
- package/compiled/item-classes/treeNodes.js +56 -0
- package/compiled/migrations/initial.js +28 -0
- package/compiled/proposals/ChangeRequestContext.js +121 -0
- package/compiled/proposals/HistoryDrawer.js +55 -0
- package/compiled/proposals/ListItem.js +22 -0
- package/compiled/proposals/MetaProperties.js +98 -0
- package/compiled/proposals/NewProposalMenu.js +53 -0
- package/compiled/proposals/ProposalBrowser.js +141 -0
- package/compiled/proposals/ProposalDetail.js +27 -0
- package/compiled/proposals/ProposalItem.js +24 -0
- package/compiled/proposals/ProposalSummary.js +28 -0
- package/compiled/proposals/ProposalTab.js +89 -0
- package/compiled/proposals/ProposalType.js +62 -0
- package/compiled/proposals/ProposalWorkspace.js +70 -0
- package/compiled/proposals/Search.js +106 -0
- package/compiled/proposals/TransitionHistory.js +271 -0
- package/compiled/proposals/TransitionOptions.js +432 -0
- package/compiled/proposals/actionableGroups/Tree.js +170 -0
- package/compiled/proposals/actionableGroups/queries.js +78 -0
- package/compiled/proposals/actionableGroups/treeNodes.js +90 -0
- package/compiled/proposals/actionableGroups/types.js +2 -0
- package/compiled/proposals/index.js +7 -0
- package/compiled/proposals/objectChangeset.js +331 -0
- package/compiled/proposals/queries.js +5 -0
- package/compiled/proposals/types.js +229 -0
- package/compiled/types/index.js +7 -0
- package/compiled/types/item.js +28 -0
- package/compiled/types/register.js +25 -0
- package/compiled/types/registry.js +10 -0
- package/compiled/types/stakeholder.js +81 -0
- package/compiled/types/util.js +3 -0
- package/compiled/types/views.js +2 -0
- package/compiled/views/AnnotatedChange.js +62 -0
- package/compiled/views/BrowserCtx.js +20 -0
- package/compiled/views/FilterCriteria/CRITERIA_CONFIGURATION.js +121 -0
- package/compiled/views/FilterCriteria/criteriaGroupToQueryExpression.js +45 -0
- package/compiled/views/FilterCriteria/criteriaGroupToSummary.js +47 -0
- package/compiled/views/FilterCriteria/criteriaToNodes.js +92 -0
- package/compiled/views/FilterCriteria/index.js +75 -0
- package/compiled/views/FilterCriteria/models.js +45 -0
- package/compiled/views/FilterCriteria/mutateGroup.js +74 -0
- package/compiled/views/GenericRelatedItemView.js +179 -0
- package/compiled/views/ItemDetailsDrawer.js +21 -0
- package/compiled/views/ItemSearchDrawer.js +29 -0
- package/compiled/views/Party.js +156 -0
- package/compiled/views/RegisterStakeholder.js +22 -0
- package/compiled/views/RegisterVersion.js +20 -0
- package/compiled/views/SearchQuery.js +90 -0
- package/compiled/views/StatefulTree.js +95 -0
- package/compiled/views/detail/AllItems.js +31 -0
- package/compiled/views/detail/ChangeRequest/index.js +49 -0
- package/compiled/views/detail/CustomView/index.js +34 -0
- package/compiled/views/detail/ProposalWork.js +167 -0
- package/compiled/views/detail/RegisterHome/ActiveProposalDetails.js +64 -0
- package/compiled/views/detail/RegisterHome/Block.js +39 -0
- package/compiled/views/detail/RegisterHome/MetaSummary.js +27 -0
- package/compiled/views/detail/RegisterHome/Proposal.js +105 -0
- package/compiled/views/detail/RegisterHome/index.js +381 -0
- package/compiled/views/detail/RegisterHome2/index.js +36 -0
- package/compiled/views/detail/RegisterItem/RelatedItems.js +28 -0
- package/compiled/views/detail/RegisterItem/SupersedingItemMenu.js +27 -0
- package/compiled/views/detail/RegisterItem/index.js +576 -0
- package/compiled/views/detail/RegisterItem/index.js.map +1 -0
- package/compiled/views/detail/RegisterItemClass.js +59 -0
- package/compiled/views/detail/RegisterMeta/RegisterMetaForm.js +176 -0
- package/compiled/views/detail/RegisterMeta/index.js +73 -0
- package/compiled/views/detail/index.js +12 -0
- package/compiled/views/diffing/InlineDiff.js +117 -0
- package/compiled/views/diffing/StructuredDiff.js +38 -0
- package/compiled/views/hooks/useCustomView.js +14 -0
- package/compiled/views/hooks/useItemClassConfig.js +8 -0
- package/compiled/views/hooks/useItemRef.js +27 -0
- package/compiled/views/hooks/useLatestAcceptedProposal.js +39 -0
- package/compiled/views/hooks/useRegisterVersion.js +35 -0
- package/compiled/views/hooks/useSingleRegisterItemData.js +22 -0
- package/compiled/views/hooks/useStakeholder.js +2 -0
- package/compiled/views/index.js +247 -0
- package/compiled/views/itemPathUtils.js +139 -0
- package/compiled/views/itemQueryUtils.js +49 -0
- package/compiled/views/protocolRegistry.js +30 -0
- package/compiled/views/sidebar/Browse/index.js +291 -0
- package/compiled/views/sidebar/ExportImport/ExportOptions.js +56 -0
- package/compiled/views/sidebar/ExportImport/ImportOptions.js +9 -0
- package/compiled/views/sidebar/ExportImport/index.js +4 -0
- package/compiled/views/sidebar/ListItem.js +31 -0
- package/compiled/views/sidebar/Registration/index.js +89 -0
- package/compiled/views/sidebar/Search/index.js +129 -0
- package/{views → compiled/views}/sidebar/Search/index.js.map +1 -1
- package/compiled/views/sidebar/index.js +115 -0
- package/compiled/views/util.js +278 -0
- package/compiled/views/util.js.map +1 -0
- package/dependencies-local/extension-kit/SettingsContext.d.ts +8 -0
- package/dependencies-local/extension-kit/SettingsContext.js +19 -0
- package/dependencies-local/extension-kit/SettingsContext.js.map +1 -0
- package/dependencies-local/extension-kit/build_site.d.ts +1 -0
- package/dependencies-local/extension-kit/build_site.js +4 -0
- package/dependencies-local/extension-kit/build_site.js.map +1 -0
- package/dependencies-local/extension-kit/context.d.ts +18 -0
- package/dependencies-local/extension-kit/context.js +143 -0
- package/dependencies-local/extension-kit/context.js.map +1 -0
- package/dependencies-local/extension-kit/i18n/ContextProvider.d.ts +9 -0
- package/dependencies-local/extension-kit/i18n/ContextProvider.js +33 -0
- package/dependencies-local/extension-kit/i18n/ContextProvider.js.map +1 -0
- package/dependencies-local/extension-kit/i18n/context.d.ts +9 -0
- package/dependencies-local/extension-kit/i18n/context.js +23 -0
- package/dependencies-local/extension-kit/i18n/context.js.map +1 -0
- package/dependencies-local/extension-kit/i18n/types.d.ts +10 -0
- package/dependencies-local/extension-kit/i18n/types.js.map +1 -0
- package/dependencies-local/extension-kit/i18n/widgets.d.ts +16 -0
- package/dependencies-local/extension-kit/i18n/widgets.js +59 -0
- package/dependencies-local/extension-kit/i18n/widgets.js.map +1 -0
- package/dependencies-local/extension-kit/index.d.ts +16 -0
- package/dependencies-local/extension-kit/index.js +149 -0
- package/dependencies-local/extension-kit/index.js.map +1 -0
- package/dependencies-local/extension-kit/object-specs/index.d.ts +2 -0
- package/dependencies-local/extension-kit/object-specs/index.js +22 -0
- package/dependencies-local/extension-kit/object-specs/index.js.map +1 -0
- package/dependencies-local/extension-kit/object-specs/paneron-object.d.ts +7 -0
- package/dependencies-local/extension-kit/object-specs/paneron-object.js +159 -0
- package/dependencies-local/extension-kit/object-specs/paneron-object.js.map +1 -0
- package/dependencies-local/extension-kit/object-specs/ser-des.d.ts +32 -0
- package/dependencies-local/extension-kit/object-specs/ser-des.js +232 -0
- package/dependencies-local/extension-kit/object-specs/ser-des.js.map +1 -0
- package/dependencies-local/extension-kit/object-specs/yaml/custom-bool.d.ts +3 -0
- package/dependencies-local/extension-kit/object-specs/yaml/custom-bool.js +42 -0
- package/dependencies-local/extension-kit/object-specs/yaml/custom-bool.js.map +1 -0
- package/dependencies-local/extension-kit/object-specs/yaml/custom-timestamp.d.ts +3 -0
- package/dependencies-local/extension-kit/object-specs/yaml/custom-timestamp.js +110 -0
- package/dependencies-local/extension-kit/object-specs/yaml/custom-timestamp.js.map +1 -0
- package/dependencies-local/extension-kit/object-specs/yaml/index.d.ts +9 -0
- package/dependencies-local/extension-kit/object-specs/yaml/index.js +36 -0
- package/dependencies-local/extension-kit/object-specs/yaml/index.js.map +1 -0
- package/dependencies-local/extension-kit/object-specs/yaml/schema.d.ts +4 -0
- package/dependencies-local/extension-kit/object-specs/yaml/schema.js +26 -0
- package/dependencies-local/extension-kit/object-specs/yaml/schema.js.map +1 -0
- package/dependencies-local/extension-kit/settings.d.ts +9 -0
- package/dependencies-local/extension-kit/settings.js +17 -0
- package/dependencies-local/extension-kit/settings.js.map +1 -0
- package/dependencies-local/extension-kit/types/binary-invocation.d.ts +31 -0
- package/dependencies-local/extension-kit/types/binary-invocation.js.map +1 -0
- package/dependencies-local/extension-kit/types/buffers.d.ts +19 -0
- package/dependencies-local/extension-kit/types/buffers.js.map +1 -0
- package/dependencies-local/extension-kit/types/changes.d.ts +37 -0
- package/dependencies-local/extension-kit/types/changes.js +5 -0
- package/dependencies-local/extension-kit/types/changes.js.map +1 -0
- package/dependencies-local/extension-kit/types/data.d.ts +54 -0
- package/dependencies-local/extension-kit/types/data.js +5 -0
- package/dependencies-local/extension-kit/types/data.js.map +1 -0
- package/dependencies-local/extension-kit/types/dialogs.d.ts +21 -0
- package/dependencies-local/extension-kit/types/dialogs.js +5 -0
- package/dependencies-local/extension-kit/types/dialogs.js.map +1 -0
- package/dependencies-local/extension-kit/types/export-formats.d.ts +23 -0
- package/dependencies-local/extension-kit/types/export-formats.js +5 -0
- package/dependencies-local/extension-kit/types/export-formats.js.map +1 -0
- package/dependencies-local/extension-kit/types/extension-maker.d.ts +17 -0
- package/dependencies-local/extension-kit/types/extension-maker.js +5 -0
- package/dependencies-local/extension-kit/types/extension-maker.js.map +1 -0
- package/dependencies-local/extension-kit/types/extension.d.ts +40 -0
- package/dependencies-local/extension-kit/types/extension.js +5 -0
- package/dependencies-local/extension-kit/types/extension.js.map +1 -0
- package/dependencies-local/extension-kit/types/index.d.ts +3 -0
- package/dependencies-local/extension-kit/types/index.js +41 -0
- package/dependencies-local/extension-kit/types/index.js.map +1 -0
- package/dependencies-local/extension-kit/types/indexes.d.ts +6 -0
- package/dependencies-local/extension-kit/types/indexes.js +15 -0
- package/dependencies-local/extension-kit/types/indexes.js.map +1 -0
- package/dependencies-local/extension-kit/types/migrations.d.ts +35 -0
- package/dependencies-local/extension-kit/types/migrations.js +5 -0
- package/dependencies-local/extension-kit/types/migrations.js.map +1 -0
- package/dependencies-local/extension-kit/types/object-spec.d.ts +109 -0
- package/dependencies-local/extension-kit/types/object-spec.js +24 -0
- package/dependencies-local/extension-kit/types/object-spec.js.map +1 -0
- package/dependencies-local/extension-kit/types/objects.d.ts +18 -0
- package/dependencies-local/extension-kit/types/objects.js +5 -0
- package/dependencies-local/extension-kit/types/objects.js.map +1 -0
- package/dependencies-local/extension-kit/types/progress.d.ts +5 -0
- package/dependencies-local/extension-kit/types/progress.js +5 -0
- package/dependencies-local/extension-kit/types/progress.js.map +1 -0
- package/dependencies-local/extension-kit/types/renderer.d.ts +505 -0
- package/dependencies-local/extension-kit/types/renderer.js +16 -0
- package/dependencies-local/extension-kit/types/renderer.js.map +1 -0
- package/dependencies-local/extension-kit/useDebounce.d.ts +5 -0
- package/dependencies-local/extension-kit/useDebounce.js +25 -0
- package/dependencies-local/extension-kit/useDebounce.js.map +1 -0
- package/dependencies-local/extension-kit/usePersistentStateReducer.d.ts +39 -0
- package/dependencies-local/extension-kit/usePersistentStateReducer.js +133 -0
- package/dependencies-local/extension-kit/usePersistentStateReducer.js.map +1 -0
- package/dependencies-local/extension-kit/useTimeTravelingPersistentStateReducer.d.ts +71 -0
- package/dependencies-local/extension-kit/useTimeTravelingPersistentStateReducer.js +107 -0
- package/dependencies-local/extension-kit/useTimeTravelingPersistentStateReducer.js.map +1 -0
- package/dependencies-local/extension-kit/util.d.ts +37 -0
- package/dependencies-local/extension-kit/util.js +179 -0
- package/dependencies-local/extension-kit/util.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/DL.d.ts +44 -0
- package/dependencies-local/extension-kit/widgets/DL.js +89 -0
- package/dependencies-local/extension-kit/widgets/DL.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/ErrorBoundary.d.ts +17 -0
- package/dependencies-local/extension-kit/widgets/ErrorBoundary.js +49 -0
- package/dependencies-local/extension-kit/widgets/ErrorBoundary.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/ErrorState.d.ts +10 -0
- package/dependencies-local/extension-kit/widgets/ErrorState.js +54 -0
- package/dependencies-local/extension-kit/widgets/ErrorState.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Grid.d.ts +41 -0
- package/dependencies-local/extension-kit/widgets/Grid.js +213 -0
- package/dependencies-local/extension-kit/widgets/Grid.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/HelpTooltip.d.ts +18 -0
- package/dependencies-local/extension-kit/widgets/HelpTooltip.js +72 -0
- package/dependencies-local/extension-kit/widgets/HelpTooltip.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/ItemCount.d.ts +19 -0
- package/dependencies-local/extension-kit/widgets/ItemCount.js +79 -0
- package/dependencies-local/extension-kit/widgets/ItemCount.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/List.d.ts +41 -0
- package/dependencies-local/extension-kit/widgets/List.js +210 -0
- package/dependencies-local/extension-kit/widgets/List.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Navbar.d.ts +20 -0
- package/dependencies-local/extension-kit/widgets/Navbar.js +76 -0
- package/dependencies-local/extension-kit/widgets/Navbar.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Navbar2.d.ts +17 -0
- package/dependencies-local/extension-kit/widgets/Navbar2.js +95 -0
- package/dependencies-local/extension-kit/widgets/Navbar2.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/OperationQueue/context.d.ts +17 -0
- package/dependencies-local/extension-kit/widgets/OperationQueue/context.js +21 -0
- package/dependencies-local/extension-kit/widgets/OperationQueue/context.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/OperationQueue/index.d.ts +8 -0
- package/dependencies-local/extension-kit/widgets/OperationQueue/index.js +159 -0
- package/dependencies-local/extension-kit/widgets/OperationQueue/index.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/OperationQueue/types.d.ts +19 -0
- package/dependencies-local/extension-kit/widgets/OperationQueue/types.js +5 -0
- package/dependencies-local/extension-kit/widgets/OperationQueue/types.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/SearchResultList.d.ts +31 -0
- package/dependencies-local/extension-kit/widgets/SearchResultList.js +203 -0
- package/dependencies-local/extension-kit/widgets/SearchResultList.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/Block.d.ts +24 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/Block.js +109 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/Block.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/BlockStateButtonGroup.d.ts +6 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/BlockStateButtonGroup.js +23 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/BlockStateButtonGroup.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/PropertyView.d.ts +29 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/PropertyView.js +157 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/PropertyView.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/index.d.ts +27 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/index.js +197 -0
- package/dependencies-local/extension-kit/widgets/Sidebar/index.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/SuperSidebar.d.ts +29 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/SuperSidebar.js +135 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/SuperSidebar.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/context.d.ts +10 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/context.js +205 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/context.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/detail.d.ts +9 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/detail.js +69 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/detail.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/index.d.ts +54 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/index.js +301 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/index.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/types.d.ts +102 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/types.js +5 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/types.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/util.d.ts +1 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/util.js +14 -0
- package/dependencies-local/extension-kit/widgets/TabbedWorkspace/util.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/Workspace.d.ts +40 -0
- package/dependencies-local/extension-kit/widgets/Workspace.js +96 -0
- package/dependencies-local/extension-kit/widgets/Workspace.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/panels/PanelSeparator.d.ts +12 -0
- package/dependencies-local/extension-kit/widgets/panels/PanelSeparator.js +60 -0
- package/dependencies-local/extension-kit/widgets/panels/PanelSeparator.js.map +1 -0
- package/dependencies-local/extension-kit/widgets/panels/index.d.ts +28 -0
- package/dependencies-local/extension-kit/widgets/panels/index.js +169 -0
- package/dependencies-local/extension-kit/widgets/panels/index.js.map +1 -0
- package/dist/common.d.ts +1 -0
- package/dist/common.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js.map +1 -0
- package/dist/item-classes/Tree.d.ts +5 -0
- package/dist/item-classes/Tree.js.map +1 -0
- package/dist/item-classes/treeNodes.d.ts +12 -0
- package/dist/item-classes/treeNodes.js.map +1 -0
- package/dist/migrations/initial.d.ts +3 -0
- package/dist/migrations/initial.js.map +1 -0
- package/dist/proposals/ChangeRequestContext.d.ts +44 -0
- package/dist/proposals/ChangeRequestContext.js.map +1 -0
- package/dist/proposals/HistoryDrawer.d.ts +12 -0
- package/dist/proposals/HistoryDrawer.js.map +1 -0
- package/dist/proposals/ListItem.d.ts +9 -0
- package/dist/proposals/ListItem.js.map +1 -0
- package/dist/proposals/MetaProperties.d.ts +14 -0
- package/dist/proposals/MetaProperties.js.map +1 -0
- package/dist/proposals/NewProposalMenu.d.ts +10 -0
- package/dist/proposals/NewProposalMenu.js.map +1 -0
- package/dist/proposals/ProposalBrowser.d.ts +29 -0
- package/dist/proposals/ProposalBrowser.js.map +1 -0
- package/dist/proposals/ProposalDetail.d.ts +6 -0
- package/dist/proposals/ProposalDetail.js.map +1 -0
- package/dist/proposals/ProposalItem.d.ts +16 -0
- package/dist/proposals/ProposalItem.js.map +1 -0
- package/dist/proposals/ProposalSummary.d.ts +6 -0
- package/dist/proposals/ProposalSummary.js.map +1 -0
- package/dist/proposals/ProposalTab.d.ts +14 -0
- package/dist/proposals/ProposalTab.js.map +1 -0
- package/dist/proposals/ProposalType.d.ts +11 -0
- package/dist/proposals/ProposalType.js.map +1 -0
- package/dist/proposals/ProposalWorkspace.d.ts +15 -0
- package/dist/proposals/ProposalWorkspace.js.map +1 -0
- package/dist/proposals/Search.d.ts +26 -0
- package/dist/proposals/Search.js.map +1 -0
- package/dist/proposals/TransitionHistory.d.ts +31 -0
- package/dist/proposals/TransitionHistory.js.map +1 -0
- package/dist/proposals/TransitionOptions.d.ts +38 -0
- package/dist/proposals/TransitionOptions.js.map +1 -0
- package/dist/proposals/actionableGroups/Tree.d.ts +7 -0
- package/dist/proposals/actionableGroups/Tree.js.map +1 -0
- package/dist/proposals/actionableGroups/queries.d.ts +4 -0
- package/dist/proposals/actionableGroups/queries.js.map +1 -0
- package/dist/proposals/actionableGroups/treeNodes.d.ts +27 -0
- package/dist/proposals/actionableGroups/treeNodes.js.map +1 -0
- package/dist/proposals/actionableGroups/types.d.ts +6 -0
- package/dist/proposals/actionableGroups/types.js +5 -0
- package/dist/proposals/actionableGroups/types.js.map +1 -0
- package/dist/proposals/index.d.ts +6 -0
- package/dist/proposals/index.js.map +1 -0
- package/dist/proposals/objectChangeset.d.ts +72 -0
- package/dist/proposals/objectChangeset.js.map +1 -0
- package/dist/proposals/queries.d.ts +4 -0
- package/dist/proposals/queries.js.map +1 -0
- package/dist/proposals/types.d.ts +332 -0
- package/dist/proposals/types.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/item.d.ts +55 -0
- package/dist/types/item.js.map +1 -0
- package/dist/types/register.d.ts +21 -0
- package/dist/types/register.js.map +1 -0
- package/dist/types/registry.d.ts +15 -0
- package/dist/types/registry.js.map +1 -0
- package/dist/types/stakeholder.d.ts +43 -0
- package/dist/types/stakeholder.js.map +1 -0
- package/dist/types/util.d.ts +28 -0
- package/dist/types/util.js +5 -0
- package/dist/types/util.js.map +1 -0
- package/dist/types/views.d.ts +228 -0
- package/dist/types/views.js +5 -0
- package/dist/types/views.js.map +1 -0
- package/dist/views/AnnotatedChange.d.ts +7 -0
- package/dist/views/AnnotatedChange.js.map +1 -0
- package/dist/views/BrowserCtx.d.ts +69 -0
- package/dist/views/BrowserCtx.js.map +1 -0
- package/dist/views/FilterCriteria/CRITERIA_CONFIGURATION.d.ts +17 -0
- package/dist/views/FilterCriteria/CRITERIA_CONFIGURATION.js.map +1 -0
- package/dist/views/FilterCriteria/criteriaGroupToQueryExpression.d.ts +6 -0
- package/dist/views/FilterCriteria/criteriaGroupToQueryExpression.js.map +1 -0
- package/dist/views/FilterCriteria/criteriaGroupToSummary.d.ts +5 -0
- package/dist/views/FilterCriteria/criteriaGroupToSummary.js.map +1 -0
- package/dist/views/FilterCriteria/criteriaToNodes.d.ts +24 -0
- package/dist/views/FilterCriteria/criteriaToNodes.js.map +1 -0
- package/dist/views/FilterCriteria/index.d.ts +23 -0
- package/dist/views/FilterCriteria/index.js.map +1 -0
- package/dist/views/FilterCriteria/models.d.ts +70 -0
- package/dist/views/FilterCriteria/models.js.map +1 -0
- package/dist/views/FilterCriteria/mutateGroup.d.ts +24 -0
- package/dist/views/FilterCriteria/mutateGroup.js.map +1 -0
- package/dist/views/GenericRelatedItemView.d.ts +9 -0
- package/dist/views/GenericRelatedItemView.js.map +1 -0
- package/dist/views/ItemDetailsDrawer.d.ts +12 -0
- package/dist/views/ItemDetailsDrawer.js.map +1 -0
- package/dist/views/ItemSearchDrawer.d.ts +11 -0
- package/dist/views/ItemSearchDrawer.js.map +1 -0
- package/dist/views/Party.d.ts +0 -0
- package/dist/views/Party.js.map +1 -0
- package/dist/views/RegisterStakeholder.d.ts +12 -0
- package/dist/views/RegisterStakeholder.js.map +1 -0
- package/dist/views/RegisterVersion.d.ts +9 -0
- package/dist/views/RegisterVersion.js.map +1 -0
- package/dist/views/SearchQuery.d.ts +19 -0
- package/dist/views/SearchQuery.js.map +1 -0
- package/dist/views/StatefulTree.d.ts +28 -0
- package/dist/views/StatefulTree.js.map +1 -0
- package/dist/views/detail/AllItems.d.ts +8 -0
- package/dist/views/detail/AllItems.js.map +1 -0
- package/dist/views/detail/ChangeRequest/index.d.ts +12 -0
- package/dist/views/detail/ChangeRequest/index.js.map +1 -0
- package/dist/views/detail/CustomView/index.d.ts +13 -0
- package/dist/views/detail/CustomView/index.js.map +1 -0
- package/dist/views/detail/ProposalWork.d.ts +8 -0
- package/dist/views/detail/ProposalWork.js.map +1 -0
- package/dist/views/detail/RegisterHome/ActiveProposalDetails.d.ts +15 -0
- package/dist/views/detail/RegisterHome/ActiveProposalDetails.js.map +1 -0
- package/dist/views/detail/RegisterHome/Block.d.ts +29 -0
- package/dist/views/detail/RegisterHome/Block.js.map +1 -0
- package/dist/views/detail/RegisterHome/MetaSummary.d.ts +9 -0
- package/dist/views/detail/RegisterHome/MetaSummary.js.map +1 -0
- package/dist/views/detail/RegisterHome/Proposal.d.ts +14 -0
- package/dist/views/detail/RegisterHome/Proposal.js.map +1 -0
- package/dist/views/detail/RegisterHome/index.d.ts +5 -0
- package/dist/views/detail/RegisterHome/index.js.map +1 -0
- package/dist/views/detail/RegisterHome2/index.d.ts +5 -0
- package/dist/views/detail/RegisterHome2/index.js.map +1 -0
- package/dist/views/detail/RegisterItem/RelatedItems.d.ts +14 -0
- package/dist/views/detail/RegisterItem/RelatedItems.js.map +1 -0
- package/dist/views/detail/RegisterItem/SupersedingItemMenu.d.ts +13 -0
- package/dist/views/detail/RegisterItem/SupersedingItemMenu.js.map +1 -0
- package/dist/views/detail/RegisterItem/index.d.ts +21 -0
- package/{views → dist/views}/detail/RegisterItem/index.js +1 -1
- package/dist/views/detail/RegisterItem/index.js.map +1 -0
- package/dist/views/detail/RegisterItemClass.d.ts +12 -0
- package/dist/views/detail/RegisterItemClass.js.map +1 -0
- package/dist/views/detail/RegisterMeta/RegisterMetaForm.d.ts +10 -0
- package/dist/views/detail/RegisterMeta/RegisterMetaForm.js.map +1 -0
- package/dist/views/detail/RegisterMeta/index.d.ts +10 -0
- package/dist/views/detail/RegisterMeta/index.js.map +1 -0
- package/dist/views/detail/index.d.ts +1 -0
- package/dist/views/detail/index.js.map +1 -0
- package/dist/views/diffing/InlineDiff.d.ts +38 -0
- package/dist/views/diffing/InlineDiff.js.map +1 -0
- package/dist/views/diffing/StructuredDiff.d.ts +11 -0
- package/dist/views/diffing/StructuredDiff.js.map +1 -0
- package/dist/views/hooks/useCustomView.d.ts +3 -0
- package/dist/views/hooks/useCustomView.js.map +1 -0
- package/dist/views/hooks/useItemClassConfig.d.ts +2 -0
- package/dist/views/hooks/useItemClassConfig.js.map +1 -0
- package/dist/views/hooks/useItemRef.d.ts +3 -0
- package/dist/views/hooks/useItemRef.js.map +1 -0
- package/dist/views/hooks/useLatestAcceptedProposal.d.ts +2 -0
- package/dist/views/hooks/useLatestAcceptedProposal.js.map +1 -0
- package/dist/views/hooks/useRegisterVersion.d.ts +5 -0
- package/dist/views/hooks/useRegisterVersion.js.map +1 -0
- package/dist/views/hooks/useSingleRegisterItemData.d.ts +3 -0
- package/dist/views/hooks/useSingleRegisterItemData.js.map +1 -0
- package/dist/views/hooks/useStakeholder.d.ts +0 -0
- package/dist/views/hooks/useStakeholder.js.map +1 -0
- package/dist/views/index.d.ts +8 -0
- package/dist/views/index.js.map +1 -0
- package/dist/views/itemPathUtils.d.ts +47 -0
- package/dist/views/itemPathUtils.js.map +1 -0
- package/dist/views/itemQueryUtils.d.ts +12 -0
- package/dist/views/itemQueryUtils.js.map +1 -0
- package/dist/views/protocolRegistry.d.ts +14 -0
- package/dist/views/protocolRegistry.js.map +1 -0
- package/dist/views/sidebar/Browse/index.d.ts +11 -0
- package/dist/views/sidebar/Browse/index.js.map +1 -0
- package/dist/views/sidebar/ExportImport/ExportOptions.d.ts +5 -0
- package/dist/views/sidebar/ExportImport/ExportOptions.js.map +1 -0
- package/dist/views/sidebar/ExportImport/ImportOptions.d.ts +4 -0
- package/dist/views/sidebar/ExportImport/ImportOptions.js.map +1 -0
- package/dist/views/sidebar/ExportImport/index.d.ts +3 -0
- package/dist/views/sidebar/ExportImport/index.js.map +1 -0
- package/dist/views/sidebar/ListItem.d.ts +10 -0
- package/dist/views/sidebar/ListItem.js.map +1 -0
- package/dist/views/sidebar/Registration/index.d.ts +9 -0
- package/dist/views/sidebar/Registration/index.js.map +1 -0
- package/dist/views/sidebar/Search/index.d.ts +29 -0
- package/{views → dist/views}/sidebar/Search/index.js +1 -1
- package/dist/views/sidebar/Search/index.js.map +1 -0
- package/dist/views/sidebar/index.d.ts +7 -0
- package/dist/views/sidebar/index.js.map +1 -0
- package/dist/views/util.d.ts +98 -0
- package/{views → dist/views}/util.js +33 -7
- package/dist/views/util.js.map +1 -0
- package/package.json +1 -1
- package/react-visual-diff.d.ts +9 -0
- package/views/detail/RegisterItem/index.js.map +0 -1
- package/views/util.js.map +0 -1
- /package/{common.d.ts → compiled/common.d.ts} +0 -0
- /package/{common.js.map → compiled/common.js.map} +0 -0
- /package/{index.d.ts → compiled/index.d.ts} +0 -0
- /package/{index.js.map → compiled/index.js.map} +0 -0
- /package/{item-classes → compiled/item-classes}/Tree.d.ts +0 -0
- /package/{item-classes → compiled/item-classes}/Tree.js.map +0 -0
- /package/{item-classes → compiled/item-classes}/treeNodes.d.ts +0 -0
- /package/{item-classes → compiled/item-classes}/treeNodes.js.map +0 -0
- /package/{migrations → compiled/migrations}/initial.d.ts +0 -0
- /package/{migrations → compiled/migrations}/initial.js.map +0 -0
- /package/{proposals → compiled/proposals}/ChangeRequestContext.d.ts +0 -0
- /package/{proposals → compiled/proposals}/ChangeRequestContext.js.map +0 -0
- /package/{proposals → compiled/proposals}/HistoryDrawer.d.ts +0 -0
- /package/{proposals → compiled/proposals}/HistoryDrawer.js.map +0 -0
- /package/{proposals → compiled/proposals}/ListItem.d.ts +0 -0
- /package/{proposals → compiled/proposals}/ListItem.js.map +0 -0
- /package/{proposals → compiled/proposals}/MetaProperties.d.ts +0 -0
- /package/{proposals → compiled/proposals}/MetaProperties.js.map +0 -0
- /package/{proposals → compiled/proposals}/NewProposalMenu.d.ts +0 -0
- /package/{proposals → compiled/proposals}/NewProposalMenu.js.map +0 -0
- /package/{proposals → compiled/proposals}/ProposalBrowser.d.ts +0 -0
- /package/{proposals → compiled/proposals}/ProposalBrowser.js.map +0 -0
- /package/{proposals → compiled/proposals}/ProposalDetail.d.ts +0 -0
- /package/{proposals → compiled/proposals}/ProposalDetail.js.map +0 -0
- /package/{proposals → compiled/proposals}/ProposalItem.d.ts +0 -0
- /package/{proposals → compiled/proposals}/ProposalItem.js.map +0 -0
- /package/{proposals → compiled/proposals}/ProposalSummary.d.ts +0 -0
- /package/{proposals → compiled/proposals}/ProposalSummary.js.map +0 -0
- /package/{proposals → compiled/proposals}/ProposalTab.d.ts +0 -0
- /package/{proposals → compiled/proposals}/ProposalTab.js.map +0 -0
- /package/{proposals → compiled/proposals}/ProposalType.d.ts +0 -0
- /package/{proposals → compiled/proposals}/ProposalType.js.map +0 -0
- /package/{proposals → compiled/proposals}/ProposalWorkspace.d.ts +0 -0
- /package/{proposals → compiled/proposals}/ProposalWorkspace.js.map +0 -0
- /package/{proposals → compiled/proposals}/Search.d.ts +0 -0
- /package/{proposals → compiled/proposals}/Search.js.map +0 -0
- /package/{proposals → compiled/proposals}/TransitionHistory.d.ts +0 -0
- /package/{proposals → compiled/proposals}/TransitionHistory.js.map +0 -0
- /package/{proposals → compiled/proposals}/TransitionOptions.d.ts +0 -0
- /package/{proposals → compiled/proposals}/TransitionOptions.js.map +0 -0
- /package/{proposals → compiled/proposals}/actionableGroups/Tree.d.ts +0 -0
- /package/{proposals → compiled/proposals}/actionableGroups/Tree.js.map +0 -0
- /package/{proposals → compiled/proposals}/actionableGroups/queries.d.ts +0 -0
- /package/{proposals → compiled/proposals}/actionableGroups/queries.js.map +0 -0
- /package/{proposals → compiled/proposals}/actionableGroups/treeNodes.d.ts +0 -0
- /package/{proposals → compiled/proposals}/actionableGroups/treeNodes.js.map +0 -0
- /package/{proposals → compiled/proposals}/actionableGroups/types.d.ts +0 -0
- /package/{proposals → compiled/proposals}/actionableGroups/types.js.map +0 -0
- /package/{proposals → compiled/proposals}/index.d.ts +0 -0
- /package/{proposals → compiled/proposals}/index.js.map +0 -0
- /package/{proposals → compiled/proposals}/objectChangeset.d.ts +0 -0
- /package/{proposals → compiled/proposals}/objectChangeset.js.map +0 -0
- /package/{proposals → compiled/proposals}/queries.d.ts +0 -0
- /package/{proposals → compiled/proposals}/queries.js.map +0 -0
- /package/{proposals → compiled/proposals}/types.d.ts +0 -0
- /package/{proposals → compiled/proposals}/types.js.map +0 -0
- /package/{types → compiled/types}/index.d.ts +0 -0
- /package/{types → compiled/types}/index.js.map +0 -0
- /package/{types → compiled/types}/item.d.ts +0 -0
- /package/{types → compiled/types}/item.js.map +0 -0
- /package/{types → compiled/types}/register.d.ts +0 -0
- /package/{types → compiled/types}/register.js.map +0 -0
- /package/{types → compiled/types}/registry.d.ts +0 -0
- /package/{types → compiled/types}/registry.js.map +0 -0
- /package/{types → compiled/types}/stakeholder.d.ts +0 -0
- /package/{types → compiled/types}/stakeholder.js.map +0 -0
- /package/{types → compiled/types}/util.d.ts +0 -0
- /package/{types → compiled/types}/util.js.map +0 -0
- /package/{types → compiled/types}/views.d.ts +0 -0
- /package/{types → compiled/types}/views.js.map +0 -0
- /package/{views → compiled/views}/AnnotatedChange.d.ts +0 -0
- /package/{views → compiled/views}/AnnotatedChange.js.map +0 -0
- /package/{views → compiled/views}/BrowserCtx.d.ts +0 -0
- /package/{views → compiled/views}/BrowserCtx.js.map +0 -0
- /package/{views → compiled/views}/FilterCriteria/CRITERIA_CONFIGURATION.d.ts +0 -0
- /package/{views → compiled/views}/FilterCriteria/CRITERIA_CONFIGURATION.js.map +0 -0
- /package/{views → compiled/views}/FilterCriteria/criteriaGroupToQueryExpression.d.ts +0 -0
- /package/{views → compiled/views}/FilterCriteria/criteriaGroupToQueryExpression.js.map +0 -0
- /package/{views → compiled/views}/FilterCriteria/criteriaGroupToSummary.d.ts +0 -0
- /package/{views → compiled/views}/FilterCriteria/criteriaGroupToSummary.js.map +0 -0
- /package/{views → compiled/views}/FilterCriteria/criteriaToNodes.d.ts +0 -0
- /package/{views → compiled/views}/FilterCriteria/criteriaToNodes.js.map +0 -0
- /package/{views → compiled/views}/FilterCriteria/index.d.ts +0 -0
- /package/{views → compiled/views}/FilterCriteria/index.js.map +0 -0
- /package/{views → compiled/views}/FilterCriteria/models.d.ts +0 -0
- /package/{views → compiled/views}/FilterCriteria/models.js.map +0 -0
- /package/{views → compiled/views}/FilterCriteria/mutateGroup.d.ts +0 -0
- /package/{views → compiled/views}/FilterCriteria/mutateGroup.js.map +0 -0
- /package/{views → compiled/views}/GenericRelatedItemView.d.ts +0 -0
- /package/{views → compiled/views}/GenericRelatedItemView.js.map +0 -0
- /package/{views → compiled/views}/ItemDetailsDrawer.d.ts +0 -0
- /package/{views → compiled/views}/ItemDetailsDrawer.js.map +0 -0
- /package/{views → compiled/views}/ItemSearchDrawer.d.ts +0 -0
- /package/{views → compiled/views}/ItemSearchDrawer.js.map +0 -0
- /package/{views → compiled/views}/Party.d.ts +0 -0
- /package/{views → compiled/views}/Party.js.map +0 -0
- /package/{views → compiled/views}/RegisterStakeholder.d.ts +0 -0
- /package/{views → compiled/views}/RegisterStakeholder.js.map +0 -0
- /package/{views → compiled/views}/RegisterVersion.d.ts +0 -0
- /package/{views → compiled/views}/RegisterVersion.js.map +0 -0
- /package/{views → compiled/views}/SearchQuery.d.ts +0 -0
- /package/{views → compiled/views}/SearchQuery.js.map +0 -0
- /package/{views → compiled/views}/StatefulTree.d.ts +0 -0
- /package/{views → compiled/views}/StatefulTree.js.map +0 -0
- /package/{views → compiled/views}/detail/AllItems.d.ts +0 -0
- /package/{views → compiled/views}/detail/AllItems.js.map +0 -0
- /package/{views → compiled/views}/detail/ChangeRequest/index.d.ts +0 -0
- /package/{views → compiled/views}/detail/ChangeRequest/index.js.map +0 -0
- /package/{views → compiled/views}/detail/CustomView/index.d.ts +0 -0
- /package/{views → compiled/views}/detail/CustomView/index.js.map +0 -0
- /package/{views → compiled/views}/detail/ProposalWork.d.ts +0 -0
- /package/{views → compiled/views}/detail/ProposalWork.js.map +0 -0
- /package/{views → compiled/views}/detail/RegisterHome/ActiveProposalDetails.d.ts +0 -0
- /package/{views → compiled/views}/detail/RegisterHome/ActiveProposalDetails.js.map +0 -0
- /package/{views → compiled/views}/detail/RegisterHome/Block.d.ts +0 -0
- /package/{views → compiled/views}/detail/RegisterHome/Block.js.map +0 -0
- /package/{views → compiled/views}/detail/RegisterHome/MetaSummary.d.ts +0 -0
- /package/{views → compiled/views}/detail/RegisterHome/MetaSummary.js.map +0 -0
- /package/{views → compiled/views}/detail/RegisterHome/Proposal.d.ts +0 -0
- /package/{views → compiled/views}/detail/RegisterHome/Proposal.js.map +0 -0
- /package/{views → compiled/views}/detail/RegisterHome/index.d.ts +0 -0
- /package/{views → compiled/views}/detail/RegisterHome/index.js.map +0 -0
- /package/{views → compiled/views}/detail/RegisterHome2/index.d.ts +0 -0
- /package/{views → compiled/views}/detail/RegisterHome2/index.js.map +0 -0
- /package/{views → compiled/views}/detail/RegisterItem/RelatedItems.d.ts +0 -0
- /package/{views → compiled/views}/detail/RegisterItem/RelatedItems.js.map +0 -0
- /package/{views → compiled/views}/detail/RegisterItem/SupersedingItemMenu.d.ts +0 -0
- /package/{views → compiled/views}/detail/RegisterItem/SupersedingItemMenu.js.map +0 -0
- /package/{views → compiled/views}/detail/RegisterItem/index.d.ts +0 -0
- /package/{views → compiled/views}/detail/RegisterItemClass.d.ts +0 -0
- /package/{views → compiled/views}/detail/RegisterItemClass.js.map +0 -0
- /package/{views → compiled/views}/detail/RegisterMeta/RegisterMetaForm.d.ts +0 -0
- /package/{views → compiled/views}/detail/RegisterMeta/RegisterMetaForm.js.map +0 -0
- /package/{views → compiled/views}/detail/RegisterMeta/index.d.ts +0 -0
- /package/{views → compiled/views}/detail/RegisterMeta/index.js.map +0 -0
- /package/{views → compiled/views}/detail/index.d.ts +0 -0
- /package/{views → compiled/views}/detail/index.js.map +0 -0
- /package/{views → compiled/views}/diffing/InlineDiff.d.ts +0 -0
- /package/{views → compiled/views}/diffing/InlineDiff.js.map +0 -0
- /package/{views → compiled/views}/diffing/StructuredDiff.d.ts +0 -0
- /package/{views → compiled/views}/diffing/StructuredDiff.js.map +0 -0
- /package/{views → compiled/views}/hooks/useCustomView.d.ts +0 -0
- /package/{views → compiled/views}/hooks/useCustomView.js.map +0 -0
- /package/{views → compiled/views}/hooks/useItemClassConfig.d.ts +0 -0
- /package/{views → compiled/views}/hooks/useItemClassConfig.js.map +0 -0
- /package/{views → compiled/views}/hooks/useItemRef.d.ts +0 -0
- /package/{views → compiled/views}/hooks/useItemRef.js.map +0 -0
- /package/{views → compiled/views}/hooks/useLatestAcceptedProposal.d.ts +0 -0
- /package/{views → compiled/views}/hooks/useLatestAcceptedProposal.js.map +0 -0
- /package/{views → compiled/views}/hooks/useRegisterVersion.d.ts +0 -0
- /package/{views → compiled/views}/hooks/useRegisterVersion.js.map +0 -0
- /package/{views → compiled/views}/hooks/useSingleRegisterItemData.d.ts +0 -0
- /package/{views → compiled/views}/hooks/useSingleRegisterItemData.js.map +0 -0
- /package/{views → compiled/views}/hooks/useStakeholder.d.ts +0 -0
- /package/{views → compiled/views}/hooks/useStakeholder.js.map +0 -0
- /package/{views → compiled/views}/index.d.ts +0 -0
- /package/{views → compiled/views}/index.js.map +0 -0
- /package/{views → compiled/views}/itemPathUtils.d.ts +0 -0
- /package/{views → compiled/views}/itemPathUtils.js.map +0 -0
- /package/{views → compiled/views}/itemQueryUtils.d.ts +0 -0
- /package/{views → compiled/views}/itemQueryUtils.js.map +0 -0
- /package/{views → compiled/views}/protocolRegistry.d.ts +0 -0
- /package/{views → compiled/views}/protocolRegistry.js.map +0 -0
- /package/{views → compiled/views}/sidebar/Browse/index.d.ts +0 -0
- /package/{views → compiled/views}/sidebar/Browse/index.js.map +0 -0
- /package/{views → compiled/views}/sidebar/ExportImport/ExportOptions.d.ts +0 -0
- /package/{views → compiled/views}/sidebar/ExportImport/ExportOptions.js.map +0 -0
- /package/{views → compiled/views}/sidebar/ExportImport/ImportOptions.d.ts +0 -0
- /package/{views → compiled/views}/sidebar/ExportImport/ImportOptions.js.map +0 -0
- /package/{views → compiled/views}/sidebar/ExportImport/index.d.ts +0 -0
- /package/{views → compiled/views}/sidebar/ExportImport/index.js.map +0 -0
- /package/{views → compiled/views}/sidebar/ListItem.d.ts +0 -0
- /package/{views → compiled/views}/sidebar/ListItem.js.map +0 -0
- /package/{views → compiled/views}/sidebar/Registration/index.d.ts +0 -0
- /package/{views → compiled/views}/sidebar/Registration/index.js.map +0 -0
- /package/{views → compiled/views}/sidebar/Search/index.d.ts +0 -0
- /package/{views → compiled/views}/sidebar/index.d.ts +0 -0
- /package/{views → compiled/views}/sidebar/index.js.map +0 -0
- /package/{views → compiled/views}/util.d.ts +0 -0
- /package/{proposals/actionableGroups → dependencies-local/extension-kit/i18n}/types.js +0 -0
- /package/{types/util.js → dependencies-local/extension-kit/types/binary-invocation.js} +0 -0
- /package/{types/views.js → dependencies-local/extension-kit/types/buffers.js} +0 -0
- /package/{common.js → dist/common.js} +0 -0
- /package/{index.js → dist/index.js} +0 -0
- /package/{item-classes → dist/item-classes}/Tree.js +0 -0
- /package/{item-classes → dist/item-classes}/treeNodes.js +0 -0
- /package/{migrations → dist/migrations}/initial.js +0 -0
- /package/{proposals → dist/proposals}/ChangeRequestContext.js +0 -0
- /package/{proposals → dist/proposals}/HistoryDrawer.js +0 -0
- /package/{proposals → dist/proposals}/ListItem.js +0 -0
- /package/{proposals → dist/proposals}/MetaProperties.js +0 -0
- /package/{proposals → dist/proposals}/NewProposalMenu.js +0 -0
- /package/{proposals → dist/proposals}/ProposalBrowser.js +0 -0
- /package/{proposals → dist/proposals}/ProposalDetail.js +0 -0
- /package/{proposals → dist/proposals}/ProposalItem.js +0 -0
- /package/{proposals → dist/proposals}/ProposalSummary.js +0 -0
- /package/{proposals → dist/proposals}/ProposalTab.js +0 -0
- /package/{proposals → dist/proposals}/ProposalType.js +0 -0
- /package/{proposals → dist/proposals}/ProposalWorkspace.js +0 -0
- /package/{proposals → dist/proposals}/Search.js +0 -0
- /package/{proposals → dist/proposals}/TransitionHistory.js +0 -0
- /package/{proposals → dist/proposals}/TransitionOptions.js +0 -0
- /package/{proposals → dist/proposals}/actionableGroups/Tree.js +0 -0
- /package/{proposals → dist/proposals}/actionableGroups/queries.js +0 -0
- /package/{proposals → dist/proposals}/actionableGroups/treeNodes.js +0 -0
- /package/{proposals → dist/proposals}/index.js +0 -0
- /package/{proposals → dist/proposals}/objectChangeset.js +0 -0
- /package/{proposals → dist/proposals}/queries.js +0 -0
- /package/{proposals → dist/proposals}/types.js +0 -0
- /package/{types → dist/types}/index.js +0 -0
- /package/{types → dist/types}/item.js +0 -0
- /package/{types → dist/types}/register.js +0 -0
- /package/{types → dist/types}/registry.js +0 -0
- /package/{types → dist/types}/stakeholder.js +0 -0
- /package/{views → dist/views}/AnnotatedChange.js +0 -0
- /package/{views → dist/views}/BrowserCtx.js +0 -0
- /package/{views → dist/views}/FilterCriteria/CRITERIA_CONFIGURATION.js +0 -0
- /package/{views → dist/views}/FilterCriteria/criteriaGroupToQueryExpression.js +0 -0
- /package/{views → dist/views}/FilterCriteria/criteriaGroupToSummary.js +0 -0
- /package/{views → dist/views}/FilterCriteria/criteriaToNodes.js +0 -0
- /package/{views → dist/views}/FilterCriteria/index.js +0 -0
- /package/{views → dist/views}/FilterCriteria/models.js +0 -0
- /package/{views → dist/views}/FilterCriteria/mutateGroup.js +0 -0
- /package/{views → dist/views}/GenericRelatedItemView.js +0 -0
- /package/{views → dist/views}/ItemDetailsDrawer.js +0 -0
- /package/{views → dist/views}/ItemSearchDrawer.js +0 -0
- /package/{views → dist/views}/Party.js +0 -0
- /package/{views → dist/views}/RegisterStakeholder.js +0 -0
- /package/{views → dist/views}/RegisterVersion.js +0 -0
- /package/{views → dist/views}/SearchQuery.js +0 -0
- /package/{views → dist/views}/StatefulTree.js +0 -0
- /package/{views → dist/views}/detail/AllItems.js +0 -0
- /package/{views → dist/views}/detail/ChangeRequest/index.js +0 -0
- /package/{views → dist/views}/detail/CustomView/index.js +0 -0
- /package/{views → dist/views}/detail/ProposalWork.js +0 -0
- /package/{views → dist/views}/detail/RegisterHome/ActiveProposalDetails.js +0 -0
- /package/{views → dist/views}/detail/RegisterHome/Block.js +0 -0
- /package/{views → dist/views}/detail/RegisterHome/MetaSummary.js +0 -0
- /package/{views → dist/views}/detail/RegisterHome/Proposal.js +0 -0
- /package/{views → dist/views}/detail/RegisterHome/index.js +0 -0
- /package/{views → dist/views}/detail/RegisterHome2/index.js +0 -0
- /package/{views → dist/views}/detail/RegisterItem/RelatedItems.js +0 -0
- /package/{views → dist/views}/detail/RegisterItem/SupersedingItemMenu.js +0 -0
- /package/{views → dist/views}/detail/RegisterItemClass.js +0 -0
- /package/{views → dist/views}/detail/RegisterMeta/RegisterMetaForm.js +0 -0
- /package/{views → dist/views}/detail/RegisterMeta/index.js +0 -0
- /package/{views → dist/views}/detail/index.js +0 -0
- /package/{views → dist/views}/diffing/InlineDiff.js +0 -0
- /package/{views → dist/views}/diffing/StructuredDiff.js +0 -0
- /package/{views → dist/views}/hooks/useCustomView.js +0 -0
- /package/{views → dist/views}/hooks/useItemClassConfig.js +0 -0
- /package/{views → dist/views}/hooks/useItemRef.js +0 -0
- /package/{views → dist/views}/hooks/useLatestAcceptedProposal.js +0 -0
- /package/{views → dist/views}/hooks/useRegisterVersion.js +0 -0
- /package/{views → dist/views}/hooks/useSingleRegisterItemData.js +0 -0
- /package/{views → dist/views}/hooks/useStakeholder.js +0 -0
- /package/{views → dist/views}/index.js +0 -0
- /package/{views → dist/views}/itemPathUtils.js +0 -0
- /package/{views → dist/views}/itemQueryUtils.js +0 -0
- /package/{views → dist/views}/protocolRegistry.js +0 -0
- /package/{views → dist/views}/sidebar/Browse/index.js +0 -0
- /package/{views → dist/views}/sidebar/ExportImport/ExportOptions.js +0 -0
- /package/{views → dist/views}/sidebar/ExportImport/ImportOptions.js +0 -0
- /package/{views → dist/views}/sidebar/ExportImport/index.js +0 -0
- /package/{views → dist/views}/sidebar/ListItem.js +0 -0
- /package/{views → dist/views}/sidebar/Registration/index.js +0 -0
- /package/{views → dist/views}/sidebar/index.js +0 -0
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proposals, group proposals,
|
|
3
|
+
* group proposal states and state transitions.
|
|
4
|
+
*/
|
|
5
|
+
import type React from 'react';
|
|
6
|
+
import type { DatasetContext } from '@riboseinc/paneron-extension-kit/types/renderer';
|
|
7
|
+
import type { InternalItemReference, Payload, RegisterItem } from '../types';
|
|
8
|
+
import type { RegisterStakeholder } from '../types/stakeholder';
|
|
9
|
+
import type { Citation } from '../types/util';
|
|
10
|
+
/**
|
|
11
|
+
* Item paths in proposal set must start with a slash
|
|
12
|
+
* and will be treated relative to dataset root.
|
|
13
|
+
* Object paths should conform to registry item path shape
|
|
14
|
+
* of `/<classID>/<itemID>.yaml`.
|
|
15
|
+
* (the `[/subregisterID]/<classID>/<itemID>.yaml` is acceptable
|
|
16
|
+
* but deprecated, as subregisters are deprecated).
|
|
17
|
+
*/
|
|
18
|
+
export declare type ProposalSet = {
|
|
19
|
+
[objectPath: string]: ChangeProposal;
|
|
20
|
+
};
|
|
21
|
+
export declare const ChangeProposalType: {
|
|
22
|
+
readonly ADDITION: "addition";
|
|
23
|
+
readonly CLARIFICATION: "clarification";
|
|
24
|
+
readonly AMENDMENT: "amendment";
|
|
25
|
+
};
|
|
26
|
+
export declare const PROPOSAL_TYPES: readonly ["addition", "clarification", "amendment"];
|
|
27
|
+
interface BaseProposal {
|
|
28
|
+
disposition?: 'accepted' | 'notAccepted';
|
|
29
|
+
type: typeof PROPOSAL_TYPES[number];
|
|
30
|
+
sources?: Citation[];
|
|
31
|
+
}
|
|
32
|
+
export interface Addition extends BaseProposal {
|
|
33
|
+
type: typeof ChangeProposalType.ADDITION;
|
|
34
|
+
}
|
|
35
|
+
export interface Clarification extends BaseProposal {
|
|
36
|
+
type: typeof ChangeProposalType.CLARIFICATION;
|
|
37
|
+
}
|
|
38
|
+
export declare const AmendmentType: {
|
|
39
|
+
readonly SUPERSESSION: "supersession";
|
|
40
|
+
readonly RETIREMENT: "retirement";
|
|
41
|
+
readonly INVALIDATION: "invalidation";
|
|
42
|
+
};
|
|
43
|
+
export declare type AmendmentTypeType = typeof AmendmentType[keyof typeof AmendmentType];
|
|
44
|
+
export declare const AMENDMENT_TYPES: readonly ["supersession", "retirement", "invalidation"];
|
|
45
|
+
interface BaseAmendment extends BaseProposal {
|
|
46
|
+
type: typeof ChangeProposalType.AMENDMENT;
|
|
47
|
+
amendmentType: AmendmentTypeType;
|
|
48
|
+
}
|
|
49
|
+
export interface Retirement extends BaseAmendment {
|
|
50
|
+
amendmentType: typeof AmendmentType.RETIREMENT;
|
|
51
|
+
}
|
|
52
|
+
export interface Supersession extends BaseAmendment {
|
|
53
|
+
amendmentType: typeof AmendmentType.SUPERSESSION;
|
|
54
|
+
supersedingItemIDs: string[];
|
|
55
|
+
}
|
|
56
|
+
export interface Invalidation extends BaseAmendment {
|
|
57
|
+
amendmentType: typeof AmendmentType.INVALIDATION;
|
|
58
|
+
}
|
|
59
|
+
export declare type Amendment = Supersession | Retirement | Invalidation;
|
|
60
|
+
export declare type ChangeProposal = Amendment | Clarification | Addition;
|
|
61
|
+
export declare function isBaseProposal(val: any): val is BaseProposal;
|
|
62
|
+
export declare function isProposal(val: any): val is ChangeProposal;
|
|
63
|
+
export declare function isAddition(val: BaseProposal): val is Addition;
|
|
64
|
+
export declare function isClarification(val: BaseProposal): val is Clarification;
|
|
65
|
+
export declare function isBaseAmendment(val: BaseProposal): val is BaseAmendment;
|
|
66
|
+
export declare function isAmendment(val: any): val is Amendment;
|
|
67
|
+
export declare function isRetirement(val: BaseAmendment): val is Retirement;
|
|
68
|
+
export declare function isSupersession(val: BaseAmendment): val is Supersession;
|
|
69
|
+
export declare function isInvalidation(val: BaseAmendment): val is Invalidation;
|
|
70
|
+
export declare function isSubmittedBy(stakeholder: RegisterStakeholder, cr: Base): boolean;
|
|
71
|
+
declare type ItemDataset = Record<string, RegisterItem<any> | null>;
|
|
72
|
+
/** Used in place of enum for convenience. */
|
|
73
|
+
export declare const State: {
|
|
74
|
+
readonly DRAFT: "draft";
|
|
75
|
+
readonly PROPOSED: "proposed";
|
|
76
|
+
readonly SUBMITTED_FOR_CONTROL_BODY_REVIEW: "pending-control-body-review";
|
|
77
|
+
readonly RETURNED_FOR_CLARIFICATION: "returned-for-clarification";
|
|
78
|
+
readonly WITHDRAWN: "withdrawn";
|
|
79
|
+
readonly ACCEPTED: "accepted";
|
|
80
|
+
readonly REJECTED: "rejected";
|
|
81
|
+
readonly APPEALED: "rejection-appealed-to-owner";
|
|
82
|
+
readonly ACCEPTED_ON_APPEAL: "accepted-on-appeal";
|
|
83
|
+
readonly REJECTION_UPHELD_ON_APPEAL: "rejection-upheld-on-appeal";
|
|
84
|
+
readonly APPEAL_WITHDRAWN: "appeal-withdrawn";
|
|
85
|
+
};
|
|
86
|
+
export declare type StateType = typeof State[keyof typeof State];
|
|
87
|
+
export declare function isState(val: string): val is StateType;
|
|
88
|
+
/** A subset of `State` that represents editable states. */
|
|
89
|
+
export declare const EditableState: readonly ["draft", "returned-for-clarification"];
|
|
90
|
+
export declare type EditableStateType = StateType & typeof EditableState[number];
|
|
91
|
+
export declare function isEditableState(state: StateType): state is EditableStateType;
|
|
92
|
+
/**
|
|
93
|
+
* Base change request type.
|
|
94
|
+
*
|
|
95
|
+
* Note that e.g. type Base<typeof State.DRAFT> does not equal to Drafted
|
|
96
|
+
* because Drafted includes additional information (namely, SubmitterInput).
|
|
97
|
+
*
|
|
98
|
+
* If the state of a CR matters, this type should not be used directly
|
|
99
|
+
* and concrete types should be used instead.
|
|
100
|
+
*/
|
|
101
|
+
export interface Base<S extends StateType = StateType> {
|
|
102
|
+
id: string;
|
|
103
|
+
state: S;
|
|
104
|
+
/**
|
|
105
|
+
* Used to match against stakeholders declared in register metadata.
|
|
106
|
+
*/
|
|
107
|
+
submittingStakeholderGitServerUsername: string;
|
|
108
|
+
items: ProposalSet;
|
|
109
|
+
/**
|
|
110
|
+
* Against which register version changes were proposed.
|
|
111
|
+
*/
|
|
112
|
+
registerVersion: string;
|
|
113
|
+
/**
|
|
114
|
+
* A link to external discussion.
|
|
115
|
+
*/
|
|
116
|
+
externalDiscussionURI?: string;
|
|
117
|
+
pastTransitions?: TransitionEntry[];
|
|
118
|
+
}
|
|
119
|
+
export interface TransitionEntry {
|
|
120
|
+
/** Verb in past tense. */
|
|
121
|
+
label: string;
|
|
122
|
+
timestamp: Date;
|
|
123
|
+
fromState: StateType;
|
|
124
|
+
toState: StateType;
|
|
125
|
+
stakeholder: RegisterStakeholder;
|
|
126
|
+
input: StateInput;
|
|
127
|
+
}
|
|
128
|
+
export declare function isCreatedBy(stakeholder: RegisterStakeholder, cr: Base): boolean;
|
|
129
|
+
/** Whether given `cr` can be edited (as in, items changed) by specified stakeholder. */
|
|
130
|
+
export declare function canBeEditedBy(stakeholder: RegisterStakeholder, cr: Base): boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Whether given `cr` can be deleted by given stakeholder.
|
|
133
|
+
* Unlike editing, deletion is possible only if there are no items
|
|
134
|
+
* and CR was never proposed.
|
|
135
|
+
*/
|
|
136
|
+
export declare function canBeDeletedBy(stakeholder: RegisterStakeholder, cr: Base): boolean;
|
|
137
|
+
/** Proposal structure for single-file proposal import format. */
|
|
138
|
+
export interface ImportableCR {
|
|
139
|
+
/** Proposal data. */
|
|
140
|
+
proposalDraft: Drafted;
|
|
141
|
+
/** Register item data for additions & clarifications. */
|
|
142
|
+
itemPayloads: ItemDataset;
|
|
143
|
+
}
|
|
144
|
+
export declare function isImportableCR(val: any): val is ImportableCR;
|
|
145
|
+
/**
|
|
146
|
+
* A change request in any state.
|
|
147
|
+
* Contains a superset of all possible properties, but all optional.
|
|
148
|
+
* XXX: ^^^ This is a lie. Should be changed from | to & with Partial<>?
|
|
149
|
+
*/
|
|
150
|
+
export declare type SomeCR = Drafted | Proposed | Withdrawn | ReturnedForClarificationByManager | SubmittedForControlBodyReview | ReturnedForClarificationByControlBody | Accepted | Rejected | RejectionUpheld | AcceptedOnAppeal | RejectedWithAppealWithdrawn;
|
|
151
|
+
export declare type Withdrawable = Proposed | SubmittedForControlBodyReview | ReturnedForClarificationByManager | ReturnedForClarificationByControlBody;
|
|
152
|
+
export declare type Proposable = Drafted | ReturnedForClarificationByManager | ReturnedForClarificationByControlBody;
|
|
153
|
+
export declare type SomeEditable = Drafted | ReturnedForClarificationByManager | ReturnedForClarificationByControlBody;
|
|
154
|
+
export declare type Disposed = Withdrawn | Accepted | Rejected | AcceptedOnAppeal | RejectionUpheld;
|
|
155
|
+
export interface Drafted extends SubmitterInput, Base<typeof State.DRAFT> {
|
|
156
|
+
timeStarted: Date;
|
|
157
|
+
timeEdited: Date;
|
|
158
|
+
}
|
|
159
|
+
export declare function isDrafted(cr: Base): cr is Drafted;
|
|
160
|
+
export interface Proposed extends Omit<Drafted, 'state'>, Base<typeof State.PROPOSED> {
|
|
161
|
+
timeProposed: Date;
|
|
162
|
+
}
|
|
163
|
+
export declare function isProposed(cr: Base): cr is Proposed;
|
|
164
|
+
export interface Withdrawn extends Omit<Withdrawable, 'state'>, Base<typeof State.WITHDRAWN> {
|
|
165
|
+
timeDisposed: Date;
|
|
166
|
+
}
|
|
167
|
+
export declare function isWithdrawn(cr: Base): cr is Withdrawn;
|
|
168
|
+
/** CR was proposed at least once. */
|
|
169
|
+
export declare function hadBeenProposed(cr: Base): cr is Base & {
|
|
170
|
+
timeProposed: Date;
|
|
171
|
+
};
|
|
172
|
+
export declare function hadBeenAccepted(cr: Base): cr is Accepted | AcceptedOnAppeal;
|
|
173
|
+
/** A proposal that had been disposed is not pending, not actionable. */
|
|
174
|
+
export declare function isDisposed(cr: Base): cr is Base & {
|
|
175
|
+
timeDisposed: Date;
|
|
176
|
+
};
|
|
177
|
+
export interface SubmittedForControlBodyReview extends Omit<Proposed, 'state'>, RegisterManagerInput, Base<typeof State.SUBMITTED_FOR_CONTROL_BODY_REVIEW> {
|
|
178
|
+
}
|
|
179
|
+
export declare function isSubmittedForControlBodyReview(cr: Base): cr is SubmittedForControlBodyReview;
|
|
180
|
+
export interface ReturnedForClarificationByManager extends Omit<Proposed, 'state'>, RegisterManagerInput, Base<typeof State.RETURNED_FOR_CLARIFICATION> {
|
|
181
|
+
}
|
|
182
|
+
export interface ReturnedForClarificationByControlBody extends Omit<SubmittedForControlBodyReview, 'state'>, ControlBodyInput, Base<typeof State.RETURNED_FOR_CLARIFICATION> {
|
|
183
|
+
}
|
|
184
|
+
export declare function isReturnedForClarification(cr: Base): cr is (ReturnedForClarificationByManager | ReturnedForClarificationByControlBody);
|
|
185
|
+
export interface Accepted extends Omit<SubmittedForControlBodyReview, 'state'>, ControlBodyInput, Base<typeof State.ACCEPTED> {
|
|
186
|
+
timeDisposed: Date;
|
|
187
|
+
}
|
|
188
|
+
export declare function isAccepted(cr: Base): cr is Accepted;
|
|
189
|
+
export interface Rejected extends Omit<SubmittedForControlBodyReview, 'state'>, ControlBodyInput, Base<typeof State.REJECTED> {
|
|
190
|
+
timeDisposed: Date;
|
|
191
|
+
}
|
|
192
|
+
export declare function isRejected(cr: Base): cr is Rejected;
|
|
193
|
+
export interface Appealed extends Omit<Rejected, 'state' | 'timeDisposed'>, AppealRequest, Base<typeof State.APPEALED> {
|
|
194
|
+
timeDisposed: undefined;
|
|
195
|
+
}
|
|
196
|
+
export declare function isAppealed(cr: Base): cr is Appealed;
|
|
197
|
+
export interface RejectionUpheld extends Omit<Appealed, 'state' | 'timeDisposed'>, RegisterOwnerInput, Base<typeof State.REJECTION_UPHELD_ON_APPEAL> {
|
|
198
|
+
timeDisposed: Date;
|
|
199
|
+
}
|
|
200
|
+
export declare function isRejectedOnAppeal(cr: Base): cr is RejectionUpheld;
|
|
201
|
+
export interface AcceptedOnAppeal extends Omit<Appealed, 'state' | 'timeDisposed'>, RegisterOwnerInput, Base<typeof State.ACCEPTED_ON_APPEAL> {
|
|
202
|
+
timeDisposed: Date;
|
|
203
|
+
}
|
|
204
|
+
export declare function isAcceptedOnAppeal(cr: Base): cr is AcceptedOnAppeal;
|
|
205
|
+
export interface RejectedWithAppealWithdrawn extends Omit<Appealed, 'state' | 'timeDisposed'>, Base<typeof State.APPEAL_WITHDRAWN> {
|
|
206
|
+
timeDisposed: Date;
|
|
207
|
+
}
|
|
208
|
+
export declare function isRejectedWithAppealWithdrawn(cr: Base): cr is RejectedWithAppealWithdrawn;
|
|
209
|
+
export interface SubmitterInput {
|
|
210
|
+
justification: string;
|
|
211
|
+
}
|
|
212
|
+
export declare function hasSubmitterInput(val: any): val is SubmitterInput;
|
|
213
|
+
export interface RegisterManagerInput {
|
|
214
|
+
registerManagerNotes: string;
|
|
215
|
+
}
|
|
216
|
+
export declare function hasRegisterManagerInput(val: any): val is RegisterManagerInput;
|
|
217
|
+
export interface ControlBodyInput {
|
|
218
|
+
controlBodyDecisionEvent: string;
|
|
219
|
+
}
|
|
220
|
+
export declare function hasControlBodyInput(val: any): val is ControlBodyInput;
|
|
221
|
+
export interface AppealRequest {
|
|
222
|
+
appealReason: string;
|
|
223
|
+
}
|
|
224
|
+
export declare function hasAppealRequest(val: any): val is AppealRequest;
|
|
225
|
+
export interface RegisterOwnerInput {
|
|
226
|
+
registerOwnerNotes: string;
|
|
227
|
+
}
|
|
228
|
+
export declare function hasRegisterOwnerInput(val: any): val is RegisterOwnerInput;
|
|
229
|
+
export declare type StateInput = SubmitterInput | RegisterManagerInput | ControlBodyInput | AppealRequest | RegisterOwnerInput;
|
|
230
|
+
/**
|
|
231
|
+
* A function that transitions CR1 to CR2.
|
|
232
|
+
*
|
|
233
|
+
* The function is declared to return the object
|
|
234
|
+
* without the `state` field, it is set
|
|
235
|
+
* by common wrapper function to reduce duplication.
|
|
236
|
+
*/
|
|
237
|
+
export declare type Transition<
|
|
238
|
+
/** From CR of this subtype */
|
|
239
|
+
CR1 extends Base,
|
|
240
|
+
/** To CR of this subtype */
|
|
241
|
+
CR2 extends Base,
|
|
242
|
+
/** Using this extra information */
|
|
243
|
+
P extends Record<string, any> | null = null> = (cr: CR1, payload: P) => Omit<CR2, 'state'>;
|
|
244
|
+
export declare type AlterApprovedCR = (crID: string, proposals: ProposalSet, origItemData: ItemDataset, newItemData: ItemDataset, opts: Pick<DatasetContext, 'getMapReducedData'>) => Promise<{
|
|
245
|
+
proposals: ProposalSet;
|
|
246
|
+
origItemData: ItemDataset;
|
|
247
|
+
newItemData: ItemDataset;
|
|
248
|
+
}>;
|
|
249
|
+
/**
|
|
250
|
+
* Describes a transition.
|
|
251
|
+
*
|
|
252
|
+
* @typeParam CR1: Change request source state type
|
|
253
|
+
* @typeParam CR2: Change request target state type
|
|
254
|
+
* @typeParam P: Extra input needed to transition, if any
|
|
255
|
+
*/
|
|
256
|
+
export interface TransitionConfig<CR1 extends Base, CR2 extends Base, P extends Record<string, any> | null = null> {
|
|
257
|
+
/**
|
|
258
|
+
* Function that implements the transition.
|
|
259
|
+
* Takes a CR in the original state and returns CR in the new state.
|
|
260
|
+
* Additionally, takes appropriate payload, if any, for the transition
|
|
261
|
+
* (e.g., register manager or control body notes).
|
|
262
|
+
*
|
|
263
|
+
* For function implementor:
|
|
264
|
+
*
|
|
265
|
+
* - Function MUST NOT modify CR in place.
|
|
266
|
+
* - Function should throw if submitted payload does not conform to requirements.
|
|
267
|
+
*/
|
|
268
|
+
func: Transition<CR1, CR2, P>;
|
|
269
|
+
targetState: CR2["state"];
|
|
270
|
+
/** Title. Use verb. */
|
|
271
|
+
title: string;
|
|
272
|
+
hint?: string | JSX.Element;
|
|
273
|
+
/** Widget that can be used to view or enter extra input. */
|
|
274
|
+
Widget: P extends null ? null : React.FC<{
|
|
275
|
+
value: P;
|
|
276
|
+
onChange?: (userInput: P) => void;
|
|
277
|
+
}>;
|
|
278
|
+
/**
|
|
279
|
+
* Function that returns true
|
|
280
|
+
* if given stakeholder can perform this transition on given CR.
|
|
281
|
+
*/
|
|
282
|
+
canBeTransitionedBy: (stakeholder: RegisterStakeholder, cr: CR1) => boolean;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Source of truth for available transitions.
|
|
286
|
+
* When updating change request business logic,
|
|
287
|
+
* this is the type that should be modified.
|
|
288
|
+
*
|
|
289
|
+
* It will cause compile errors until transition implementation
|
|
290
|
+
* is updated correspondingly.
|
|
291
|
+
*/
|
|
292
|
+
export declare type Transitions = {
|
|
293
|
+
[State.DRAFT]: {
|
|
294
|
+
[State.WITHDRAWN]: TransitionConfig<Proposed, Withdrawn>;
|
|
295
|
+
[State.PROPOSED]: TransitionConfig<Drafted, Proposed, SubmitterInput>;
|
|
296
|
+
};
|
|
297
|
+
[State.PROPOSED]: {
|
|
298
|
+
[State.WITHDRAWN]: TransitionConfig<Proposed, Withdrawn>;
|
|
299
|
+
[State.SUBMITTED_FOR_CONTROL_BODY_REVIEW]: TransitionConfig<Proposed, SubmittedForControlBodyReview, RegisterManagerInput>;
|
|
300
|
+
[State.RETURNED_FOR_CLARIFICATION]: TransitionConfig<Proposed, ReturnedForClarificationByManager, RegisterManagerInput>;
|
|
301
|
+
};
|
|
302
|
+
[State.SUBMITTED_FOR_CONTROL_BODY_REVIEW]: {
|
|
303
|
+
[State.WITHDRAWN]: TransitionConfig<SubmittedForControlBodyReview, Withdrawn>;
|
|
304
|
+
[State.RETURNED_FOR_CLARIFICATION]: TransitionConfig<SubmittedForControlBodyReview, ReturnedForClarificationByControlBody, ControlBodyInput>;
|
|
305
|
+
[State.REJECTED]: TransitionConfig<SubmittedForControlBodyReview, Rejected, ControlBodyInput>;
|
|
306
|
+
[State.ACCEPTED]: TransitionConfig<SubmittedForControlBodyReview, Accepted, ControlBodyInput>;
|
|
307
|
+
};
|
|
308
|
+
[State.RETURNED_FOR_CLARIFICATION]: {
|
|
309
|
+
[State.PROPOSED]: TransitionConfig<ReturnedForClarificationByManager | ReturnedForClarificationByControlBody, Proposed, SubmitterInput>;
|
|
310
|
+
[State.WITHDRAWN]: TransitionConfig<ReturnedForClarificationByManager | ReturnedForClarificationByControlBody, Withdrawn>;
|
|
311
|
+
};
|
|
312
|
+
[State.REJECTED]: {
|
|
313
|
+
[State.APPEALED]: TransitionConfig<Rejected, Appealed, AppealRequest>;
|
|
314
|
+
};
|
|
315
|
+
[State.APPEALED]: {
|
|
316
|
+
[State.APPEAL_WITHDRAWN]: TransitionConfig<Appealed, RejectedWithAppealWithdrawn>;
|
|
317
|
+
[State.ACCEPTED_ON_APPEAL]: TransitionConfig<Appealed, AcceptedOnAppeal, RegisterOwnerInput>;
|
|
318
|
+
[State.REJECTION_UPHELD_ON_APPEAL]: TransitionConfig<Appealed, RejectionUpheld, RegisterOwnerInput>;
|
|
319
|
+
};
|
|
320
|
+
};
|
|
321
|
+
export interface ProposalProps<P extends ChangeProposal> {
|
|
322
|
+
proposal: P;
|
|
323
|
+
/** Highlight changes. */
|
|
324
|
+
showDiff?: boolean;
|
|
325
|
+
/** In diff mode, only show changed data. (Provisional.) */
|
|
326
|
+
showOnlyChanged?: boolean;
|
|
327
|
+
itemRef: InternalItemReference;
|
|
328
|
+
item: RegisterItem<Payload>;
|
|
329
|
+
itemBefore: P extends Clarification ? RegisterItem<Payload> : undefined;
|
|
330
|
+
onChange?: (newProposal: P) => void;
|
|
331
|
+
}
|
|
332
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/proposals/types.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Proposals, group proposals,\n * group proposal states and state transitions.\n */\n\nimport type React from 'react';\nimport type { DatasetContext } from '@riboseinc/paneron-extension-kit/types/renderer';\n\nimport type {\n InternalItemReference,\n Payload,\n RegisterItem,\n} from '../types';\n\nimport type { RegisterStakeholder } from '../types/stakeholder';\nimport type { Citation } from '../types/util';\n\n\n// Proposal items\n// ==============\n\n/**\n * Item paths in proposal set must start with a slash\n * and will be treated relative to dataset root.\n * Object paths should conform to registry item path shape\n * of `/<classID>/<itemID>.yaml`.\n * (the `[/subregisterID]/<classID>/<itemID>.yaml` is acceptable\n * but deprecated, as subregisters are deprecated).\n */\nexport type ProposalSet = {\n [objectPath: string]: ChangeProposal\n}\n\nexport const ChangeProposalType = {\n ADDITION: 'addition',\n CLARIFICATION: 'clarification',\n AMENDMENT: 'amendment',\n} as const;\nexport const PROPOSAL_TYPES = [\n ChangeProposalType.ADDITION,\n ChangeProposalType.CLARIFICATION,\n ChangeProposalType.AMENDMENT,\n] as const;\n\ninterface BaseProposal {\n //itemID: RegisterItemID\n disposition?: 'accepted' | 'notAccepted'\n type: typeof PROPOSAL_TYPES[number]\n sources?: Citation[]\n}\n\nexport interface Addition extends BaseProposal {\n type: typeof ChangeProposalType.ADDITION\n ///** New item data. */\n //payload: Payload\n}\n\nexport interface Clarification extends BaseProposal {\n type: typeof ChangeProposalType.CLARIFICATION\n ///** Updated item data */\n //payload: Payload\n}\n\nexport const AmendmentType = {\n SUPERSESSION: 'supersession',\n RETIREMENT: 'retirement',\n INVALIDATION: 'invalidation',\n} as const;\nexport type AmendmentTypeType = typeof AmendmentType[keyof typeof AmendmentType];\nexport const AMENDMENT_TYPES = [\n AmendmentType.SUPERSESSION,\n AmendmentType.RETIREMENT,\n AmendmentType.INVALIDATION,\n] as const;\n\ninterface BaseAmendment extends BaseProposal {\n type: typeof ChangeProposalType.AMENDMENT\n amendmentType: AmendmentTypeType\n}\nexport interface Retirement extends BaseAmendment {\n amendmentType: typeof AmendmentType.RETIREMENT\n}\nexport interface Supersession extends BaseAmendment {\n amendmentType: typeof AmendmentType.SUPERSESSION\n supersedingItemIDs: string[]\n}\nexport interface Invalidation extends BaseAmendment {\n amendmentType: typeof AmendmentType.INVALIDATION\n}\nexport type Amendment = Supersession | Retirement | Invalidation\n\nexport type ChangeProposal = Amendment | Clarification | Addition\n\nexport function isBaseProposal(val: any): val is BaseProposal {\n return PROPOSAL_TYPES.indexOf(val?.type) >= 0;\n}\nexport function isProposal(val: any): val is ChangeProposal {\n return (isBaseProposal(val) && (\n isAddition(val)\n || isClarification(val)\n || isAmendment(val)));\n}\nexport function isAddition(val: BaseProposal): val is Addition {\n return (val.type === ChangeProposalType.ADDITION);\n}\nexport function isClarification(val: BaseProposal): val is Clarification {\n return (val.type === ChangeProposalType.CLARIFICATION);\n}\nexport function isBaseAmendment(val: BaseProposal): val is BaseAmendment {\n return (\n val.type === ChangeProposalType.AMENDMENT\n && AMENDMENT_TYPES.indexOf((val as Amendment).amendmentType) >= 0);\n}\nexport function isAmendment(val: any): val is Amendment {\n return (isBaseAmendment(val) && (\n isRetirement(val)\n || isSupersession(val)\n || isInvalidation(val)));\n}\nexport function isRetirement(val: BaseAmendment): val is Retirement {\n return val.amendmentType === AmendmentType.RETIREMENT;\n}\nexport function isSupersession(val: BaseAmendment): val is Supersession {\n return val.amendmentType === AmendmentType.SUPERSESSION;\n}\nexport function isInvalidation(val: BaseAmendment): val is Invalidation {\n return val.amendmentType === AmendmentType.INVALIDATION;\n}\n\n\n// Change request types, states and state transitions.\n\nexport function isSubmittedBy(stakeholder: RegisterStakeholder, cr: Base): boolean {\n return (\n //isSubmitter(stakeholder) &&\n stakeholder.gitServerUsername === cr.submittingStakeholderGitServerUsername);\n}\n\n\ntype ItemDataset = Record<string, RegisterItem<any> | null>;\n\n\n// =====================\n// Change request states\n// =====================\n\n/** Used in place of enum for convenience. */\nexport const State = {\n DRAFT: 'draft',\n PROPOSED: 'proposed',\n SUBMITTED_FOR_CONTROL_BODY_REVIEW: 'pending-control-body-review',\n RETURNED_FOR_CLARIFICATION: 'returned-for-clarification',\n WITHDRAWN: 'withdrawn',\n ACCEPTED: 'accepted',\n REJECTED: 'rejected',\n APPEALED: 'rejection-appealed-to-owner',\n ACCEPTED_ON_APPEAL: 'accepted-on-appeal',\n REJECTION_UPHELD_ON_APPEAL: 'rejection-upheld-on-appeal',\n APPEAL_WITHDRAWN: 'appeal-withdrawn',\n} as const;\n\nexport type StateType = typeof State[keyof typeof State];\n\nexport function isState(val: string): val is StateType {\n return Object.values(State).indexOf(val as StateType) >= 0;\n}\n\n/** A subset of `State` that represents editable states. */\nexport const EditableState = [\n State.DRAFT,\n State.RETURNED_FOR_CLARIFICATION,\n] as const;\n\nexport type EditableStateType = StateType & typeof EditableState[number];\n\nexport function isEditableState(state: StateType): state is EditableStateType {\n return EditableState.indexOf(state as EditableStateType) >= 0;\n}\n\n\n\n// ======================\n// Change request classes\n// ======================\n\n/**\n * Base change request type.\n *\n * Note that e.g. type Base<typeof State.DRAFT> does not equal to Drafted\n * because Drafted includes additional information (namely, SubmitterInput).\n *\n * If the state of a CR matters, this type should not be used directly\n * and concrete types should be used instead.\n */\nexport interface Base<S extends StateType = StateType>\n{\n id: string;\n // decision: typeof Decision[keyof typeof Decision]\n // disposition?: typeof Disposition[keyof typeof Disposition]\n state: S;\n\n /**\n * Used to match against stakeholders declared in register metadata.\n */\n submittingStakeholderGitServerUsername: string;\n\n items: ProposalSet;\n\n /**\n * Against which register version changes were proposed.\n */\n registerVersion: string;\n\n /**\n * A link to external discussion.\n */\n externalDiscussionURI?: string;\n\n pastTransitions?: TransitionEntry[];\n}\n\n\nexport interface TransitionEntry {\n /** Verb in past tense. */\n label: string;\n\n timestamp: Date;\n fromState: StateType;\n toState: StateType;\n stakeholder: RegisterStakeholder;\n input: StateInput;\n}\n\n\nexport function isCreatedBy(stakeholder: RegisterStakeholder, cr: Base): boolean {\n return stakeholder.gitServerUsername?.trim() !== '' && stakeholder.gitServerUsername === cr.submittingStakeholderGitServerUsername;\n}\n\n/** Whether given `cr` can be edited (as in, items changed) by specified stakeholder. */\nexport function canBeEditedBy(stakeholder: RegisterStakeholder, cr: Base): boolean {\n return isCreatedBy(stakeholder, cr) && isEditableState(cr.state);\n}\n\n/**\n * Whether given `cr` can be deleted by given stakeholder.\n * Unlike editing, deletion is possible only if there are no items\n * and CR was never proposed.\n */\nexport function canBeDeletedBy(stakeholder: RegisterStakeholder, cr: Base): boolean {\n return (\n isCreatedBy(stakeholder, cr)\n && isDrafted(cr)\n //&& Object.keys(cr.items).length < 1 // Only allow deleting empty CRs\n && !hadBeenProposed(cr) // If it had been proposed, it should be withdrawn instead.\n );\n}\n\n\n/** Proposal structure for single-file proposal import format. */\nexport interface ImportableCR {\n /** Proposal data. */\n proposalDraft: Drafted,\n /** Register item data for additions & clarifications. */\n itemPayloads: ItemDataset,\n // TODO: Rename ImportableCR.itemPayloads to newItemData\n}\nexport function isImportableCR(val: any): val is ImportableCR {\n // TODO: More complete check\n return (\n val.proposalDraft.id\n && isDrafted(val.proposalDraft as Base)\n && Object.keys(val.itemPayloads).length > 0);\n}\n\n\n/**\n * A change request in any state.\n * Contains a superset of all possible properties, but all optional.\n * XXX: ^^^ This is a lie. Should be changed from | to & with Partial<>?\n */\nexport type SomeCR = \n | Drafted\n | Proposed\n | Withdrawn\n | ReturnedForClarificationByManager\n | SubmittedForControlBodyReview\n | ReturnedForClarificationByControlBody\n | Accepted\n | Rejected\n | RejectionUpheld\n | AcceptedOnAppeal\n | RejectedWithAppealWithdrawn;\n\nexport type Withdrawable =\n | Proposed\n | SubmittedForControlBodyReview\n | ReturnedForClarificationByManager\n | ReturnedForClarificationByControlBody;\n\nexport type Proposable =\n | Drafted\n | ReturnedForClarificationByManager\n | ReturnedForClarificationByControlBody;\n\nexport type SomeEditable =\n | Drafted\n | ReturnedForClarificationByManager\n | ReturnedForClarificationByControlBody;\n\nexport type Disposed =\n | Withdrawn\n | Accepted\n | Rejected\n | AcceptedOnAppeal\n | RejectionUpheld;\n\n\n// More specific change request types.\n// TODO: Refactor to avoid confusiong between current state e.g. Proposed)\n// and type (Proposed, to which all inheriting classes also conform)\n\nexport interface Drafted extends\n SubmitterInput,\n Base<typeof State.DRAFT> { timeStarted: Date, timeEdited: Date }\nexport function isDrafted(cr: Base): cr is Drafted {\n return isInState(cr, State.DRAFT);\n}\n\nexport interface Proposed extends\n Omit<Drafted, 'state'>,\n Base<typeof State.PROPOSED> { timeProposed: Date }\nexport function isProposed(cr: Base): cr is Proposed {\n return isInState(cr, State.PROPOSED);\n}\n\nexport interface Withdrawn extends\n Omit<Withdrawable, 'state'>,\n Base<typeof State.WITHDRAWN> { timeDisposed: Date }\nexport function isWithdrawn(cr: Base): cr is Withdrawn {\n return isInState(cr, State.WITHDRAWN);\n}\n\n/** CR was proposed at least once. */\nexport function hadBeenProposed(cr: Base): cr is Base & { timeProposed: Date } {\n return cr && cr.hasOwnProperty('timeProposed') && !!(cr as Proposed).timeProposed;\n}\nexport function hadBeenAccepted(cr: Base): cr is Accepted | AcceptedOnAppeal {\n return isDisposed(cr) && (isAccepted(cr) || isAcceptedOnAppeal(cr));\n}\n/** A proposal that had been disposed is not pending, not actionable. */\nexport function isDisposed(cr: Base): cr is Base & { timeDisposed: Date } {\n return cr && cr.hasOwnProperty('timeDisposed') && !!(cr as Disposed).timeDisposed;\n // TODO: include status checks, too?\n //return [\n // State.WITHDRAWN,\n // State.ACCEPTED,\n // State.REJECTED,\n // State.REJECTION_UPHELD_ON_APPEAL,\n // State.ACCEPTED_ON_APPEAL,\n //].some(s => cr.state === s);\n}\n\nexport interface SubmittedForControlBodyReview extends\n Omit<Proposed, 'state'>,\n RegisterManagerInput,\n Base<typeof State.SUBMITTED_FOR_CONTROL_BODY_REVIEW> {}\n\nexport function isSubmittedForControlBodyReview(cr: Base): cr is SubmittedForControlBodyReview {\n return isInState(cr, State.SUBMITTED_FOR_CONTROL_BODY_REVIEW)\n}\n\nexport interface ReturnedForClarificationByManager extends\n Omit<Proposed, 'state'>,\n RegisterManagerInput,\n Base<typeof State.RETURNED_FOR_CLARIFICATION> {}\n\nexport interface ReturnedForClarificationByControlBody extends\n Omit<SubmittedForControlBodyReview, 'state'>,\n ControlBodyInput,\n Base<typeof State.RETURNED_FOR_CLARIFICATION> {}\n\nexport function isReturnedForClarification(cr: Base): cr is (ReturnedForClarificationByManager | ReturnedForClarificationByControlBody) {\n return isInState(cr, State.RETURNED_FOR_CLARIFICATION)\n}\n\nexport interface Accepted extends\n Omit<SubmittedForControlBodyReview, 'state'>,\n ControlBodyInput,\n Base<typeof State.ACCEPTED> { timeDisposed: Date }\nexport function isAccepted(cr: Base): cr is Accepted {\n return isInState(cr, State.ACCEPTED);\n}\n\nexport interface Rejected extends\n Omit<SubmittedForControlBodyReview, 'state'>,\n ControlBodyInput,\n Base<typeof State.REJECTED> { timeDisposed: Date }\nexport function isRejected(cr: Base): cr is Rejected {\n return isInState(cr, State.REJECTED);\n}\n\nexport interface Appealed extends\n Omit<Rejected, 'state' | 'timeDisposed'>,\n AppealRequest,\n Base<typeof State.APPEALED> { timeDisposed: undefined }\nexport function isAppealed(cr: Base): cr is Appealed {\n return isInState(cr, State.APPEALED);\n}\n\nexport interface RejectionUpheld extends\n Omit<Appealed, 'state' | 'timeDisposed'>,\n RegisterOwnerInput,\n Base<typeof State.REJECTION_UPHELD_ON_APPEAL> { timeDisposed: Date }\nexport function isRejectedOnAppeal(cr: Base): cr is RejectionUpheld {\n return isInState(cr, State.REJECTION_UPHELD_ON_APPEAL);\n}\n\nexport interface AcceptedOnAppeal extends\n Omit<Appealed, 'state' | 'timeDisposed'>,\n RegisterOwnerInput,\n Base<typeof State.ACCEPTED_ON_APPEAL> { timeDisposed: Date }\nexport function isAcceptedOnAppeal(cr: Base): cr is AcceptedOnAppeal {\n return isInState(cr, State.ACCEPTED_ON_APPEAL);\n}\n\nexport interface RejectedWithAppealWithdrawn extends\n Omit<Appealed, 'state' | 'timeDisposed'>,\n Base<typeof State.APPEAL_WITHDRAWN> { timeDisposed: Date }\nexport function isRejectedWithAppealWithdrawn(cr: Base): cr is RejectedWithAppealWithdrawn {\n return isInState(cr, State.APPEAL_WITHDRAWN);\n}\n\n\n\n// Input required when transitioning to different states\n\nexport interface SubmitterInput {\n justification: string;\n}\nexport function hasSubmitterInput(val: any): val is SubmitterInput {\n return val.hasOwnProperty('justification') && typeof val.justification === 'string';\n}\nexport interface RegisterManagerInput {\n registerManagerNotes: string;\n}\nexport function hasRegisterManagerInput(val: any): val is RegisterManagerInput {\n return val.hasOwnProperty('registerManagerNotes') && typeof val.registerManagerNotes === 'string';\n}\nexport interface ControlBodyInput {\n //controlBodyNotes: string;\n controlBodyDecisionEvent: string;\n}\nexport function hasControlBodyInput(val: any): val is ControlBodyInput {\n return (\n //val.hasOwnProperty('controlBodyNotes') && typeof val.controlBodyNotes === 'string' &&\n val.hasOwnProperty('controlBodyDecisionEvent') && typeof val.controlBodyDecisionEvent === 'string');\n}\nexport interface AppealRequest {\n appealReason: string;\n}\nexport function hasAppealRequest(val: any): val is AppealRequest {\n return val.hasOwnProperty('appealReason') && typeof val.appealReason === 'string';\n}\nexport interface RegisterOwnerInput {\n registerOwnerNotes: string;\n}\nexport function hasRegisterOwnerInput(val: any): val is RegisterOwnerInput {\n return val.hasOwnProperty('registerOwnerNotes') && typeof val.registerOwnerNotes === 'string';\n}\n\nexport type StateInput =\n | SubmitterInput\n | RegisterManagerInput\n | ControlBodyInput\n | AppealRequest\n | RegisterOwnerInput;\n\n\n/** \n * CR type guard helper.\n * Normally you would not use it directly and instead use\n * more specific is[Type]() helper from this module.\n *\n * Checks CR type using the `state` property.\n * Does not validate other properties.\n *\n * Usage:\n *\n * @example\n * ```ts\n * let someCR;\n * if (isInState<Drafted>(someCR, State.DRAFT)) {\n * // Can assume someCR is Drafted\n * }\n * ```\n *\n * It’ll try to tell you if you mismatch those.\n *\n * @example\n * Will not compile:\n * ```ts\n * let someCR;\n * if (isInState<Drafted>(someCR, State.PROPOSED)) {\n * // Compile error\n * // because State.PROPOSED is not a possible value of Drafted[\"state\"]\n * }\n * ```\n *\n * @example\n * Incorrect usage (do not do this):\n * ```ts\n * let someCR;\n * if (isInState(someCR, State.DRAFT)) {\n * // Can NOT assume someCR is Drafted\n * // The compiler must know the expected concrete CR type\n * }\n * ```\n */\nfunction isInState<CR extends Base>(cr: Base, s: CR[\"state\"]): cr is CR {\n return cr.state === s;\n}\n\n\n\n\n// ===========\n// Transitions\n// ===========\n\n/**\n * A function that transitions CR1 to CR2.\n *\n * The function is declared to return the object\n * without the `state` field, it is set\n * by common wrapper function to reduce duplication.\n */\nexport type Transition<\n /** From CR of this subtype */\n CR1 extends Base,\n /** To CR of this subtype */\n CR2 extends Base,\n /** Using this extra information */\n P extends Record<string, any> | null = null,\n> = (cr: CR1, payload: P) => Omit<CR2, 'state'>;\n\n\nexport type AlterApprovedCR = (\n crID: string,\n proposals: ProposalSet,\n origItemData: ItemDataset,\n newItemData: ItemDataset,\n opts: Pick<DatasetContext, 'getMapReducedData'>,\n) => Promise<{\n proposals: ProposalSet,\n origItemData: ItemDataset,\n newItemData: ItemDataset,\n}>\n\n\n/**\n * Describes a transition.\n *\n * @typeParam CR1: Change request source state type\n * @typeParam CR2: Change request target state type\n * @typeParam P: Extra input needed to transition, if any\n */\nexport interface TransitionConfig<CR1 extends Base, CR2 extends Base, P extends Record<string, any> | null = null> {\n /**\n * Function that implements the transition.\n * Takes a CR in the original state and returns CR in the new state.\n * Additionally, takes appropriate payload, if any, for the transition\n * (e.g., register manager or control body notes).\n *\n * For function implementor:\n *\n * - Function MUST NOT modify CR in place.\n * - Function should throw if submitted payload does not conform to requirements.\n */\n func: Transition<CR1, CR2, P>;\n\n targetState: CR2[\"state\"];\n\n /** Title. Use verb. */\n title: string;\n\n hint?: string | JSX.Element;\n\n /** Widget that can be used to view or enter extra input. */\n Widget: P extends null ? null : React.FC<{ value: P, onChange?: (userInput: P) => void }>;\n\n /**\n * Function that returns true\n * if given stakeholder can perform this transition on given CR.\n */\n canBeTransitionedBy: (stakeholder: RegisterStakeholder, cr: CR1) => boolean;\n}\n\n\n// type TransitionSpec = {\n// [S1 in StateType]?: {\n// [S2 in StateType]?: Transition<Base<S1>, Base<S2>, Record<string, any>>\n// }\n// }\n\n\n/**\n * Source of truth for available transitions.\n * When updating change request business logic,\n * this is the type that should be modified.\n *\n * It will cause compile errors until transition implementation\n * is updated correspondingly.\n */\nexport type Transitions = {\n [State.DRAFT]: {\n // [State.DRAFT]:\n // TransitionConfig<Drafted, Drafted, SubmitterInput>;\n [State.WITHDRAWN]:\n TransitionConfig<Proposed, Withdrawn>;\n [State.PROPOSED]:\n TransitionConfig<Drafted, Proposed, SubmitterInput>;\n };\n [State.PROPOSED]: {\n [State.WITHDRAWN]:\n TransitionConfig<Proposed, Withdrawn>;\n [State.SUBMITTED_FOR_CONTROL_BODY_REVIEW]:\n TransitionConfig<Proposed, SubmittedForControlBodyReview, RegisterManagerInput>;\n [State.RETURNED_FOR_CLARIFICATION]:\n TransitionConfig<Proposed, ReturnedForClarificationByManager, RegisterManagerInput>;\n };\n [State.SUBMITTED_FOR_CONTROL_BODY_REVIEW]: {\n [State.WITHDRAWN]:\n TransitionConfig<SubmittedForControlBodyReview, Withdrawn>;\n [State.RETURNED_FOR_CLARIFICATION]:\n TransitionConfig<SubmittedForControlBodyReview, ReturnedForClarificationByControlBody, ControlBodyInput>;\n [State.REJECTED]:\n TransitionConfig<SubmittedForControlBodyReview, Rejected, ControlBodyInput>;\n [State.ACCEPTED]:\n TransitionConfig<SubmittedForControlBodyReview, Accepted, ControlBodyInput>;\n };\n [State.RETURNED_FOR_CLARIFICATION]: {\n [State.PROPOSED]:\n TransitionConfig<ReturnedForClarificationByManager | ReturnedForClarificationByControlBody, Proposed, SubmitterInput>;\n [State.WITHDRAWN]:\n TransitionConfig<ReturnedForClarificationByManager | ReturnedForClarificationByControlBody, Withdrawn>;\n };\n [State.REJECTED]: {\n [State.APPEALED]:\n TransitionConfig<Rejected, Appealed, AppealRequest>;\n };\n [State.APPEALED]: {\n [State.APPEAL_WITHDRAWN]:\n TransitionConfig<Appealed, RejectedWithAppealWithdrawn>;\n [State.ACCEPTED_ON_APPEAL]:\n TransitionConfig<Appealed, AcceptedOnAppeal, RegisterOwnerInput>;\n [State.REJECTION_UPHELD_ON_APPEAL]:\n TransitionConfig<Appealed, RejectionUpheld, RegisterOwnerInput>;\n };\n}\n\n\n// Utility\n// =======\n\nexport interface ProposalProps<P extends ChangeProposal> {\n proposal: P\n\n /** Highlight changes. */\n showDiff?: boolean\n\n /** In diff mode, only show changed data. (Provisional.) */\n showOnlyChanged?: boolean\n\n itemRef: InternalItemReference\n item: RegisterItem<Payload>\n itemBefore: P extends Clarification ? RegisterItem<Payload> : undefined\n onChange?: (newProposal: P) => void\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC","sourcesContent":["export * from './views';\nexport * from './register';\nexport * from './registry';\nexport * from './item';\nexport * from './stakeholder';\nexport * from './util';\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Citation, LocalizedAlternative } from './util';
|
|
2
|
+
export declare type Payload = Record<string, any>;
|
|
3
|
+
declare const ITEM_STATUSES: readonly ["submitted", "valid", "superseded", "retired", "invalid"];
|
|
4
|
+
export declare type ItemStatus = typeof ITEM_STATUSES[number];
|
|
5
|
+
export interface RegisterItemID {
|
|
6
|
+
classID: string;
|
|
7
|
+
itemID: string;
|
|
8
|
+
}
|
|
9
|
+
export interface RegisterItemClass {
|
|
10
|
+
id: string;
|
|
11
|
+
title: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
alternativeNames?: Readonly<LocalizedAlternative<string>[]>;
|
|
14
|
+
}
|
|
15
|
+
interface ItemReference {
|
|
16
|
+
registerID: string;
|
|
17
|
+
subregisterID?: string;
|
|
18
|
+
classID: string;
|
|
19
|
+
itemID: string;
|
|
20
|
+
}
|
|
21
|
+
export declare type InternalItemReference = Omit<ItemReference, 'registerID'>;
|
|
22
|
+
export declare function isInternalItemReference(val: any): val is InternalItemReference;
|
|
23
|
+
export declare const DUMMY_REF: InternalItemReference;
|
|
24
|
+
interface AbstractItemSource {
|
|
25
|
+
type: string;
|
|
26
|
+
}
|
|
27
|
+
interface PaneronRegisterItemSource extends AbstractItemSource {
|
|
28
|
+
type: 'paneron_register';
|
|
29
|
+
itemRef: ItemReference;
|
|
30
|
+
}
|
|
31
|
+
interface ExternalSource extends AbstractItemSource {
|
|
32
|
+
type: 'external';
|
|
33
|
+
citation: Citation;
|
|
34
|
+
}
|
|
35
|
+
declare type RegisterItemSource = PaneronRegisterItemSource | ExternalSource;
|
|
36
|
+
export interface RegisterItem<P extends Payload = Payload> {
|
|
37
|
+
id: string;
|
|
38
|
+
status: ItemStatus;
|
|
39
|
+
dateAccepted: Date;
|
|
40
|
+
/**
|
|
41
|
+
* UUID of change request that defined the current version.
|
|
42
|
+
* (Provisional.)
|
|
43
|
+
*/
|
|
44
|
+
amendedInCR?: string;
|
|
45
|
+
supersededBy?: InternalItemReference[];
|
|
46
|
+
supersedes?: InternalItemReference[];
|
|
47
|
+
/**
|
|
48
|
+
* Register item data. Domain-specific. May include additional human-readable identifiers.
|
|
49
|
+
* In ISO 19135-1 was represented by “definition”.
|
|
50
|
+
*/
|
|
51
|
+
data: P;
|
|
52
|
+
source?: RegisterItemSource;
|
|
53
|
+
}
|
|
54
|
+
export declare function isRegisterItem(val: any): val is RegisterItem<any>;
|
|
55
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item.js","sourceRoot":"","sources":["../../src/types/item.ts"],"names":[],"mappings":"AAKA,MAAM,aAAa,GAAG;IACpB,WAAW;IACX,OAAO;IACP,YAAY;IACZ,SAAS;IACT,SAAS;CACD,CAAC;AA2BX,MAAM,UAAU,uBAAuB,CAAC,GAAQ;IAC9C,OAAO,CACL,GAAG;QACH,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC;QAC5B,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC;QAC7B,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ;QAChC,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,QAAQ,CAClC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAA0B;IAC9C,MAAM,EAAE,qBAAqB;IAC7B,OAAO,EAAE,sBAAsB;IAC/B,aAAa,EAAE,SAAS;CAChB,CAAC;AA6CX,MAAM,UAAU,cAAc,CAAC,GAAQ;IACrC,OAAO,CACL,GAAG;QACH,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC;QACxB,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC;QAC1B,OAAO,GAAG,CAAC,IAAI,KAAK,WAAW;QAC/B,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC;QAC5B,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CACvC,CAAC;AACJ,CAAC","sourcesContent":["import type { Citation, LocalizedAlternative } from './util';\n\n\nexport type Payload = Record<string, any>\n\nconst ITEM_STATUSES = [\n 'submitted',\n 'valid',\n 'superseded',\n 'retired',\n 'invalid',\n] as const;\n\nexport type ItemStatus = typeof ITEM_STATUSES[number];\n\n\nexport interface RegisterItemID {\n classID: string\n itemID: string\n}\n\n\nexport interface RegisterItemClass {\n id: string\n title: string\n description?: string\n alternativeNames?: Readonly<LocalizedAlternative<string>[]>\n}\n\ninterface ItemReference {\n registerID: string\n subregisterID?: string\n classID: string\n itemID: string\n}\n\nexport type InternalItemReference = Omit<ItemReference, 'registerID'>\n\nexport function isInternalItemReference(val: any): val is InternalItemReference {\n return (\n val &&\n val.hasOwnProperty('itemID') &&\n val.hasOwnProperty('classID') &&\n typeof val['itemID'] == 'string' &&\n typeof val['classID'] == 'string'\n );\n}\n\nexport const DUMMY_REF: InternalItemReference = {\n itemID: 'NONEXISTENT_ITEM_ID',\n classID: 'NONEXISTENT_CLASS_ID',\n subregisterID: undefined,\n} as const;\n\n\ninterface AbstractItemSource {\n type: string\n}\ninterface PaneronRegisterItemSource extends AbstractItemSource {\n type: 'paneron_register'\n itemRef: ItemReference\n}\ninterface ExternalSource extends AbstractItemSource {\n type: 'external'\n citation: Citation\n}\ntype RegisterItemSource = PaneronRegisterItemSource | ExternalSource\n\nexport interface RegisterItem<P extends Payload = Payload> {\n id: string // UUID\n\n status: ItemStatus\n\n dateAccepted: Date\n // This is a mandatory property, since until their acceptance items “live” as part of their corresponding change requests\n\n /**\n * UUID of change request that defined the current version.\n * (Provisional.)\n */\n amendedInCR?: string\n\n // TODO: Denormalized, should be validated with consistency checks\n supersededBy?: InternalItemReference[]\n supersedes?: InternalItemReference[]\n\n /**\n * Register item data. Domain-specific. May include additional human-readable identifiers.\n * In ISO 19135-1 was represented by “definition”.\n */\n data: P\n\n source?: RegisterItemSource\n // TODO: Citations were suggested to be moved to proposals, as motivating/substantiating evidence.\n // TODO: Register item, however, should have a relationship that points to the original proto-item from another register.\n}\n\nexport function isRegisterItem(val: any): val is RegisterItem<any> {\n return (\n val &&\n val.hasOwnProperty('id') &&\n val.hasOwnProperty('data') &&\n typeof val.data !== 'undefined' &&\n val.hasOwnProperty('status') &&\n ITEM_STATUSES.indexOf(val.status) >= 0\n );\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type RegisterStakeholder, type Organization } from './stakeholder';
|
|
2
|
+
import { type Locale } from './util';
|
|
3
|
+
export interface Register {
|
|
4
|
+
id?: string;
|
|
5
|
+
name: string;
|
|
6
|
+
contentSummary: string;
|
|
7
|
+
uniformResourceIdentifier: string;
|
|
8
|
+
operatingLanguage: Locale;
|
|
9
|
+
alternativeLanguages: Locale[];
|
|
10
|
+
version?: Version;
|
|
11
|
+
stakeholders: RegisterStakeholder[];
|
|
12
|
+
organizations: {
|
|
13
|
+
[orgID: string]: Organization;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export declare function isRegisterMetadata(val: any): val is Register;
|
|
17
|
+
export interface Version {
|
|
18
|
+
id: string;
|
|
19
|
+
timestamp: Date;
|
|
20
|
+
}
|
|
21
|
+
export declare function isVersion(val: any): val is Version;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/types/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAsBnG,MAAM,UAAU,kBAAkB,CAAC,GAAQ;IACzC,OAAO,CACL,GAAG;QACH,8BAA8B;QAC9B,+BAA+B;QAC/B,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC;QAC1B,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAC5B,yCAAyC;QACzC,2CAA2C;QAC3C,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC;QAClC,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAC3B,6BAA6B;QAC7B,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,qBAAqB,CAAC;QAC7C,kCAAkC;QAClC,2EAA2E;QAC3E,iDAAiD;QACjD,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAOD,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,OAAO,CACL,GAAG;QACH,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC;QACxB,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC;QAC/B,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;AAChC,CAAC","sourcesContent":["import { type RegisterStakeholder, type Organization, isRegisterStakeholder } from './stakeholder';\nimport { type Locale } from './util';\n\n\nexport interface Register {\n // TODO: what is register ID? Perhaps URI is enough?\n id?: string\n name: string\n contentSummary: string\n uniformResourceIdentifier: string\n\n operatingLanguage: Locale\n alternativeLanguages: Locale[]\n\n version?: Version\n stakeholders: RegisterStakeholder[]\n\n organizations: {\n [orgID: string]: Organization\n }\n}\n\nexport function isRegisterMetadata(val: any): val is Register {\n return (\n val &&\n // val.hasOwnProperty('id') &&\n //typeof val.id === 'string' &&\n val.hasOwnProperty('name') &&\n typeof val.name === 'string' &&\n //val.hasOwnProperty('contentSummary') &&\n //typeof val.contentSummary === 'string' &&\n val.hasOwnProperty('stakeholders') &&\n val.stakeholders.length > 0 &&\n // Stakeholders must be right\n val.stakeholders.every(isRegisterStakeholder) &&\n // Must have at least an owner? No\n // val.stakeholders.some((s: RegisterStakeholder) => s.role === 'owner') &&\n // Must have a valid version (or no version? hmm)\n (val.version === undefined || isVersion(val.version)));\n}\n\nexport interface Version {\n id: string\n timestamp: Date\n}\n\nexport function isVersion(val: any): val is Version {\n return (\n val &&\n val.hasOwnProperty('id') &&\n val.hasOwnProperty('timestamp') &&\n typeof val.id === 'string');\n}\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface Registry {
|
|
2
|
+
/** A registry is referenced by an UUID. */
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
/** HTTPS URL to Git repository holding registry source information. */
|
|
6
|
+
repoURL: string;
|
|
7
|
+
/** URL under which the registry is made publicly available. */
|
|
8
|
+
publicURL: string;
|
|
9
|
+
/** Data directory within the repository. */
|
|
10
|
+
dataRoot?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const KNOWN_AUTHORITATIVE_REGISTRIES: Registry[];
|
|
13
|
+
export interface ConnectedRegistry {
|
|
14
|
+
workingCopyPath: string;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/types/registry.ts"],"names":[],"mappings":"AAgBA,2BAA2B;AAE3B,MAAM,CAAC,MAAM,8BAA8B,GAAe;IACxD;QACE,EAAE,EAAE,sCAAsC;QAC1C,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,+BAA+B;QAC1C,OAAO,EAAE,+CAA+C;KACzD;CACF,CAAC","sourcesContent":["export interface Registry {\n /** A registry is referenced by an UUID. */\n id: string\n\n name: string\n\n /** HTTPS URL to Git repository holding registry source information. */\n repoURL: string\n\n /** URL under which the registry is made publicly available. */\n publicURL: string\n\n /** Data directory within the repository. */\n dataRoot?: string\n}\n\n// TODO: What is below for?\n\nexport const KNOWN_AUTHORITATIVE_REGISTRIES: Registry[] = [\n {\n id: '9D546C5C-8FA4-496D-A721-6DA72E35F4A9',\n name: 'ICS codes',\n publicURL: 'https://ics.demo.paneron.org/',\n repoURL: 'https://github.com/paneron/ics-codes-registry',\n },\n];\n\nexport interface ConnectedRegistry {\n workingCopyPath: string\n}\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Possible roles of a register stakeholder. */
|
|
2
|
+
export declare const StakeholderRole: {
|
|
3
|
+
readonly Owner: "owner";
|
|
4
|
+
readonly ControlBody: "control-body";
|
|
5
|
+
readonly ControlBodyReview: "control-body-reviewer";
|
|
6
|
+
readonly Manager: "manager";
|
|
7
|
+
readonly Submitter: "submitter";
|
|
8
|
+
};
|
|
9
|
+
export declare const StakeholderRoleLabels: Record<StakeholderRoleType, string>;
|
|
10
|
+
export declare type StakeholderRoleType = typeof StakeholderRole[keyof typeof StakeholderRole];
|
|
11
|
+
export declare const STAKEHOLDER_ROLES: StakeholderRoleType[];
|
|
12
|
+
export declare function isStakeholderRole(val: string): val is StakeholderRoleType;
|
|
13
|
+
export declare function canCreateCR(stakeholder: RegisterStakeholder): boolean;
|
|
14
|
+
export declare function canImportCR(stakeholder: RegisterStakeholder): boolean;
|
|
15
|
+
export interface Contact {
|
|
16
|
+
label: string;
|
|
17
|
+
value: string;
|
|
18
|
+
notes?: string;
|
|
19
|
+
}
|
|
20
|
+
/** Register stakeholder represents an individual. */
|
|
21
|
+
export interface RegisterStakeholder {
|
|
22
|
+
/** Stakeholder’s role wrt. the current register. */
|
|
23
|
+
roles: readonly StakeholderRoleType[];
|
|
24
|
+
name: string;
|
|
25
|
+
gitServerUsername?: string;
|
|
26
|
+
contacts: Contact[];
|
|
27
|
+
affiliations: {
|
|
28
|
+
[orgID: string]: StakeholderOrgAffiliation;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export interface StakeholderOrgAffiliation {
|
|
32
|
+
role: 'pointOfContact' | 'member';
|
|
33
|
+
}
|
|
34
|
+
export declare function isOwner(val: RegisterStakeholder): boolean;
|
|
35
|
+
export declare function isControlBody(val: RegisterStakeholder): boolean;
|
|
36
|
+
export declare function isControlBodyReviewer(val: RegisterStakeholder): boolean;
|
|
37
|
+
export declare function isManager(val: RegisterStakeholder): boolean;
|
|
38
|
+
export declare function isSubmitter(val: RegisterStakeholder): boolean;
|
|
39
|
+
export interface Organization {
|
|
40
|
+
logoURL: string;
|
|
41
|
+
name: string;
|
|
42
|
+
}
|
|
43
|
+
export declare function isRegisterStakeholder(val: any): val is RegisterStakeholder;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stakeholder.js","sourceRoot":"","sources":["../../src/types/stakeholder.ts"],"names":[],"mappings":"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","sourcesContent":["// Stakeholders\n\n/** Possible roles of a register stakeholder. */\nexport const StakeholderRole = {\n Owner: 'owner',\n ControlBody: 'control-body',\n ControlBodyReview: 'control-body-reviewer',\n Manager: 'manager',\n Submitter: 'submitter',\n} as const;\n\nexport const StakeholderRoleLabels: Record<StakeholderRoleType, string> = {\n owner: \"Owner\",\n 'control-body': \"Control body approver\",\n 'control-body-reviewer': \"Control body reviewer\",\n manager: \"Manager\",\n submitter: \"Proposal submitter\",\n};\n\nexport type StakeholderRoleType = typeof StakeholderRole[keyof typeof StakeholderRole];\n\nexport const STAKEHOLDER_ROLES = Object.values(StakeholderRole) as StakeholderRoleType[];\n\nexport function isStakeholderRole(val: string): val is StakeholderRoleType {\n return STAKEHOLDER_ROLES.indexOf(val as StakeholderRoleType) >= 0;\n}\n\n//export function getStakeholders(\n// allStakeholders: readonly RegisterStakeholder[],\n// gitServerUsername: string,\n//): readonly RegisterStakeholder[] {\n// if (allStakeholders.length < 1) {\n// return Object.freeze([]);\n// } else {\n// const normalizedUsername = gitServerUsername.toLowerCase();\n// return Object.freeze(allStakeholders.filter(sh =>\n// sh.parties.find(p => p.gitServerUsername?.toLowerCase() === normalizedUsername)\n// ))\n// }\n//}\n\nexport function canCreateCR(stakeholder: RegisterStakeholder): boolean {\n return (\n isOwner(stakeholder) || isSubmitter(stakeholder) || isManager(stakeholder) && \n // Must have a Git server username (current limitation)\n // in order to be able to edit this proposal later.\n stakeholder.gitServerUsername?.trim() !== '');\n}\n\nexport function canImportCR(stakeholder: RegisterStakeholder): boolean {\n return (\n isManager(stakeholder) || isOwner(stakeholder) &&\n // Must have a Git server username (current limitation)\n // in order to be able to edit this proposal later.\n stakeholder.gitServerUsername?.trim() !== '');\n}\n\nexport interface Contact {\n label: string\n value: string\n notes?: string\n}\n\n/** Register stakeholder represents an individual. */\nexport interface RegisterStakeholder {\n /** Stakeholder’s role wrt. the current register. */\n //role: StakeholderRoleType\n roles: readonly StakeholderRoleType[]\n\n name: string\n\n gitServerUsername?: string\n\n contacts: Contact[]\n\n affiliations: {\n [orgID: string]: StakeholderOrgAffiliation\n }\n}\n\nexport interface StakeholderOrgAffiliation {\n role: 'pointOfContact' | 'member'\n}\n\nexport function isOwner(val: RegisterStakeholder): boolean {\n return val.roles?.includes(StakeholderRole.Owner)\n || (val as any).role === StakeholderRole.Owner;\n}\n\nexport function isControlBody(val: RegisterStakeholder): boolean {\n return val.roles?.includes(StakeholderRole.ControlBody)\n || (val as any).role === StakeholderRole.ControlBody;\n}\n\nexport function isControlBodyReviewer(val: RegisterStakeholder): boolean {\n return val.roles?.includes(StakeholderRole.ControlBodyReview)\n || (val as any).role === StakeholderRole.ControlBodyReview;\n}\n\nexport function isManager(val: RegisterStakeholder): boolean {\n return val.roles?.includes(StakeholderRole.Manager)\n || (val as any).role === StakeholderRole.Manager;\n}\n\nexport function isSubmitter(val: RegisterStakeholder): boolean {\n return val.roles?.includes(StakeholderRole.Submitter)\n || (val as any).role === StakeholderRole.Submitter;\n}\n\n// Either logoURL or name or both must be present on an org here\nexport interface Organization {\n logoURL: string\n name: string\n}\n\n//export type RegisterStakeholder = Owner | ControlBody | Manager | Submitter\n\nexport function isRegisterStakeholder(val: any): val is RegisterStakeholder {\n return (\n val\n && val.hasOwnProperty('name')\n && (\n (val.hasOwnProperty('roles') && val.roles.every(isStakeholderRole))\n || (val.hasOwnProperty('role') && isStakeholderRole(val.role)) // TODO: obsolete\n )\n );\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface Locale {
|
|
2
|
+
name: string;
|
|
3
|
+
country: string;
|
|
4
|
+
languageCode: string;
|
|
5
|
+
characterEncoding: 'utf-8';
|
|
6
|
+
}
|
|
7
|
+
export interface Citation {
|
|
8
|
+
title: string;
|
|
9
|
+
author?: string | null;
|
|
10
|
+
publisher?: string | null;
|
|
11
|
+
publicationDate?: string | null;
|
|
12
|
+
revisionDate?: string | null;
|
|
13
|
+
seriesIssueID: string | null;
|
|
14
|
+
seriesName: string | null;
|
|
15
|
+
seriesPage: string | null;
|
|
16
|
+
edition: string | null;
|
|
17
|
+
editionDate: string | null;
|
|
18
|
+
otherDetails: string;
|
|
19
|
+
isbn: string | null;
|
|
20
|
+
issn: string | null;
|
|
21
|
+
alternateTitles?: string[];
|
|
22
|
+
doi?: string;
|
|
23
|
+
uri?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface LocalizedAlternative<T> {
|
|
26
|
+
alternative: T;
|
|
27
|
+
locale: Locale;
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/types/util.ts"],"names":[],"mappings":"AAAA,YAAY","sourcesContent":["// Utilities\n\nexport interface Locale {\n name: string\n country: string\n languageCode: string // ISO 639-2\n characterEncoding: 'utf-8' // TODO: Support more encodings\n // TODO: citation?: CI_Citation\n}\n\n\nexport interface Citation {\n title: string\n\n author?: string | null\n publisher?: string | null\n publicationDate?: string | null\n revisionDate?: string | null\n\n seriesIssueID: string | null\n seriesName: string | null\n seriesPage: string | null\n\n edition: string | null\n editionDate: string | null\n\n otherDetails: string\n\n isbn: string | null\n issn: string | null\n\n alternateTitles?: string[]\n\n doi?: string\n uri?: string\n\n //publicationDate: Date\n}\n\n\nexport interface LocalizedAlternative<T> {\n alternative: T\n locale: Locale\n}\n"]}
|