@ximatai/muyun-web-app 0.26.10 → 0.26.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/dist/ModuleActionManagementView-BHEooZ5L.js +672 -0
  2. package/dist/ModuleGovernanceView-DB3TWlMy.js +28521 -0
  3. package/dist/RoleDetailWorkspaceView-D6X7pAj5.js +1379 -0
  4. package/dist/index.css +1 -1
  5. package/dist/index.js +1929 -351
  6. package/dist/moduleGovernanceWorkspaceView-C5pqJOEJ.js +40 -0
  7. package/dist/platform-workbench-DJj42YQP.js +22911 -0
  8. package/dist/rolldown-runtime-DPVXH0ON.js +17 -0
  9. package/dist/types/app/CurrentUserProfileDialog.vue.d.ts +0 -2
  10. package/dist/types/app/LoginView.vue.d.ts +1 -1
  11. package/dist/types/app/workbenchRouteSync.d.ts +10 -1
  12. package/dist/types/app/workbenchSessionTabs.d.ts +22 -0
  13. package/dist/types/app/workbenchStartup.d.ts +7 -0
  14. package/dist/types/consumer/AppWorkbenchShell.vue.d.ts +4 -1
  15. package/dist/types/consumer/index.d.ts +2 -1
  16. package/dist/types/dynamic-page-runtime/ModulePageDetailRelations.vue.d.ts +1 -1
  17. package/dist/types/dynamic-page-runtime/ModulePageHost.vue.d.ts +12 -1
  18. package/dist/types/dynamic-page-runtime/ModuleRecordDetailActions.vue.d.ts +17 -0
  19. package/dist/types/dynamic-page-runtime/NavigatorPanelActions.vue.d.ts +22 -0
  20. package/dist/types/dynamic-page-runtime/PageNavigatorExplorer.vue.d.ts +11 -11
  21. package/dist/types/dynamic-page-runtime/childAggregateContext.d.ts +11 -0
  22. package/dist/types/dynamic-page-runtime/composables/useModulePageDetailExtensionRuntime.d.ts +3 -1
  23. package/dist/types/dynamic-page-runtime/composables/useModulePageFormContributionRuntime.d.ts +5 -3
  24. package/dist/types/dynamic-page-runtime/composables/useNavigatorRuntime.d.ts +82 -28
  25. package/dist/types/dynamic-page-runtime/composables/useRecordEditingSession.d.ts +1 -1
  26. package/dist/types/dynamic-page-runtime/formActionResult.d.ts +5 -0
  27. package/dist/types/dynamic-page-runtime/formComputeCoordinator.d.ts +7 -4
  28. package/dist/types/dynamic-page-runtime/formValidationCoordinator.d.ts +17 -0
  29. package/dist/types/dynamic-page-runtime/index.d.ts +1 -2
  30. package/dist/types/dynamic-page-runtime/modulePageEnhancements.d.ts +75 -1
  31. package/dist/types/dynamic-page-runtime/pageActionInvocation.d.ts +7 -0
  32. package/dist/types/dynamic-page-runtime/pageActionPlacement.d.ts +14 -0
  33. package/dist/types/dynamic-page-runtime/recordMutationPayload.d.ts +3 -0
  34. package/dist/types/formula/FormulaRuntime.d.ts +9 -0
  35. package/dist/types/{dynamic-page-runtime/DynamicModuleHost.vue.d.ts → platform-admin-runtime/module-menu/ModuleMenuDrawer.vue.d.ts} +2 -2
  36. package/dist/types/platform-admin-runtime/module-menu/ModuleMenuEntriesSection.vue.d.ts +7 -0
  37. package/dist/types/platform-admin-runtime/module-menu/moduleMenuClient.d.ts +16 -0
  38. package/dist/types/platform-admin-runtime/platformModulePageEnhancement.d.ts +2 -0
  39. package/dist/types/platform-admin-runtime/role/RoleAccountGrantDrawerSurface.vue.d.ts +7 -0
  40. package/dist/types/platform-admin-runtime/role/RoleAuthorizationDrawerSurface.vue.d.ts +7 -0
  41. package/dist/types/platform-admin-runtime/role/RoleEmploymentGrantDrawerSurface.vue.d.ts +7 -0
  42. package/dist/types/platform-admin-runtime/role/RoleEnumTitleCell.vue.d.ts +8 -0
  43. package/dist/types/platform-admin-runtime/role/RoleGroupMemberFormField.vue.d.ts +7 -0
  44. package/dist/types/platform-admin-runtime/role/RoleScopeTree.vue.d.ts +7 -0
  45. package/dist/types/platform-admin-runtime/roleModulePageEnhancement.d.ts +7 -0
  46. package/dist/types/platform-components/AdaptiveHeaderActionBar.vue.d.ts +24 -0
  47. package/dist/types/platform-components/BusinessNotificationPanel.vue.d.ts +15 -1
  48. package/dist/types/platform-components/CrudRecordListExplorer.vue.d.ts +9 -4
  49. package/dist/types/platform-components/DetailRelationListPanel.vue.d.ts +1 -1
  50. package/dist/types/platform-components/DrawerOperationBar.vue.d.ts +4 -2
  51. package/dist/types/platform-components/FormulaExpressionEditor.vue.d.ts +54 -0
  52. package/dist/types/platform-components/ManagementExplorerColumn.vue.d.ts +15 -3
  53. package/dist/types/platform-components/ManagementPanelHeader.vue.d.ts +5 -3
  54. package/dist/types/platform-components/ManagementWorkspace.vue.d.ts +11 -0
  55. package/dist/types/platform-components/ModuleActionButton.vue.d.ts +3 -3
  56. package/dist/types/platform-components/QueryGroupedSummary.vue.d.ts +21 -0
  57. package/dist/types/platform-components/RecordDetailDrawer.vue.d.ts +1 -0
  58. package/dist/types/platform-components/RecordDetailExtensionSection.vue.d.ts +2 -0
  59. package/dist/types/platform-components/RecordDetailFields.vue.d.ts +41 -2
  60. package/dist/types/platform-components/RecordDetailLayout.vue.d.ts +8 -3
  61. package/dist/types/platform-components/RecordDetailPanel.vue.d.ts +2 -0
  62. package/dist/types/platform-components/RecordExplorerCreateButton.vue.d.ts +16 -0
  63. package/dist/types/platform-components/RecordExplorerPanel.vue.d.ts +16 -5
  64. package/dist/types/platform-components/RecordFieldLabel.vue.d.ts +16 -0
  65. package/dist/types/platform-components/RecordFormFields.vue.d.ts +21 -2
  66. package/dist/types/platform-components/RecordFormGrid.vue.d.ts +24 -0
  67. package/dist/types/platform-components/RecordListExplorer.vue.d.ts +23 -1
  68. package/dist/types/platform-components/RecordMultiPicker.vue.d.ts +2 -2
  69. package/dist/types/platform-components/RecordPanelButton.vue.d.ts +9 -3
  70. package/dist/types/platform-components/RecordPermissionDialog.vue.d.ts +15 -0
  71. package/dist/types/platform-components/RecordPicker.vue.d.ts +2 -2
  72. package/dist/types/platform-components/RecordQueryEnumFilter.vue.d.ts +17 -0
  73. package/dist/types/platform-components/RecordQueryListCell.vue.d.ts +12 -0
  74. package/dist/types/platform-components/RecordQueryListPanel.vue.d.ts +110 -64
  75. package/dist/types/platform-components/RecordQueryListSurface.vue.d.ts +124 -0
  76. package/dist/types/platform-components/RecordRelationTable.vue.d.ts +62 -0
  77. package/dist/types/platform-components/RecordRelationValue.vue.d.ts +9 -0
  78. package/dist/types/platform-components/RecordStatusSwitch.vue.d.ts +3 -3
  79. package/dist/types/platform-components/StaticManagementLayout.vue.d.ts +2 -0
  80. package/dist/types/platform-components/TreeRecordExplorer.vue.d.ts +15 -4
  81. package/dist/types/platform-components/adaptiveHeaderActionLayout.d.ts +22 -0
  82. package/dist/types/platform-components/formulaExpressionTokens.d.ts +18 -0
  83. package/dist/types/platform-components/index.d.ts +20 -1
  84. package/dist/types/platform-components/managementExplorerContext.d.ts +11 -0
  85. package/dist/types/platform-components/managementWorkspaceContext.d.ts +20 -0
  86. package/dist/types/platform-components/managementWorkspaceLayout.d.ts +14 -0
  87. package/dist/types/platform-components/optionFieldOptionCache.d.ts +1 -1
  88. package/dist/types/platform-components/recordActionBarModel.d.ts +3 -0
  89. package/dist/types/platform-components/recordQueryListColumnModel.d.ts +42 -0
  90. package/dist/types/platform-components/scopedTreeModuleContext.d.ts +2 -2
  91. package/dist/types/platform-components/selectionRefresh.d.ts +9 -0
  92. package/dist/types/platform-components/sortPartitionKey.d.ts +5 -0
  93. package/dist/types/platform-components/staticTreeResourceModuleContext.d.ts +3 -3
  94. package/dist/types/platform-workbench/index.d.ts +2 -0
  95. package/dist/types/platform-workbench/useWorkspaceViewUnsavedState.d.ts +5 -0
  96. package/dist/types/platform-workbench/workbenchNavigation.d.ts +5 -1
  97. package/dist/types/platform-workbench/workspaceViewContract.d.ts +5 -0
  98. package/dist/types/platform-workbench/workspaceViewHost.d.ts +5 -0
  99. package/dist/types/platform-workbench/workspaceViewNavigation.d.ts +9 -0
  100. package/dist/types/platform-workbench/workspaceViewUnsavedState.d.ts +3 -0
  101. package/dist/types/views/BusinessRuleGovernanceSurface.vue.d.ts +10 -0
  102. package/dist/types/views/EmployeeEmploymentTable.vue.d.ts +5 -0
  103. package/dist/types/views/{UserDetailRouteView.vue.d.ts → MetadataGovernanceSurface.vue.d.ts} +3 -3
  104. package/dist/types/views/MetadataSourceTree.vue.d.ts +44 -0
  105. package/dist/types/views/ModuleBusinessPreview.vue.d.ts +7 -0
  106. package/dist/types/views/ModuleExperienceProfileOverview.vue.d.ts +7 -0
  107. package/dist/types/views/ModuleGovernanceView.vue.d.ts +9 -0
  108. package/dist/types/views/PageCompositionDescriptorPreview.vue.d.ts +54 -0
  109. package/dist/types/views/PageCompositionTree.vue.d.ts +103 -0
  110. package/dist/types/views/PageCompositionWorkspace.vue.d.ts +7 -0
  111. package/dist/types/views/PageQuerySummaryEditor.vue.d.ts +48 -0
  112. package/dist/types/views/RoleAccountGrantDrawer.vue.d.ts +6 -2
  113. package/dist/types/views/RoleAuthorizationView.vue.d.ts +7 -0
  114. package/dist/types/views/RoleEmploymentGrantDrawer.vue.d.ts +5 -1
  115. package/dist/types/views/businessRuleGovernance.d.ts +201 -0
  116. package/dist/types/views/metadataModelEditSession.d.ts +75 -0
  117. package/dist/types/views/metadataModelTree.d.ts +40 -0
  118. package/dist/types/views/metadataNaming.d.ts +7 -0
  119. package/dist/types/views/metadataOrchestrationState.d.ts +161 -6
  120. package/dist/types/views/metadataSourceTree.d.ts +10 -0
  121. package/dist/types/views/moduleGovernanceWorkspaceView.d.ts +9 -0
  122. package/dist/types/views/pageCompositionDraftState.d.ts +375 -0
  123. package/dist/types/views/pageCompositionDragPayload.d.ts +26 -0
  124. package/dist/types/views/pageCompositionMode.d.ts +86 -0
  125. package/dist/types/views/pageCompositionPlacement.d.ts +48 -0
  126. package/dist/types/views/pageCompositionTransport.d.ts +9 -0
  127. package/dist/types/views/roleGrantClient.d.ts +8 -5
  128. package/dist/types/views/usePageCompositionActionPreviewDrag.d.ts +41 -0
  129. package/dist/types/views/usePageCompositionPreviewDrag.d.ts +48 -0
  130. package/dist/types/vue-ui-antdv/components/UiActionButton.vue.d.ts +2 -2
  131. package/dist/types/vue-ui-antdv/components/UiButton.vue.d.ts +6 -3
  132. package/dist/types/vue-ui-antdv/components/UiDataTable.vue.d.ts +5 -2
  133. package/dist/types/vue-ui-antdv/components/UiIcon.vue.d.ts +1 -1
  134. package/dist/types/vue-ui-antdv/components/UiPopover.vue.d.ts +22 -0
  135. package/dist/types/vue-ui-antdv/components/UiRecordExplorerItem.vue.d.ts +1 -1
  136. package/dist/types/vue-ui-antdv/components/UiSelect.vue.d.ts +5 -1
  137. package/dist/types/vue-ui-antdv/components/UiSwitch.vue.d.ts +1 -1
  138. package/dist/types/vue-ui-antdv/components/UiTable.vue.d.ts +1 -0
  139. package/dist/types/vue-ui-antdv/components/UiTextArea.vue.d.ts +38 -1
  140. package/dist/types/vue-ui-antdv/components/UiTokenInput.vue.d.ts +62 -0
  141. package/dist/types/vue-ui-antdv/components/UiTree.vue.d.ts +76 -3
  142. package/dist/types/vue-ui-antdv/components/UiTreeSelect.vue.d.ts +1 -1
  143. package/dist/types/vue-ui-antdv/index.d.ts +6 -1
  144. package/dist/types/vue-ui-antdv/treeStructure.d.ts +18 -0
  145. package/dist/types/vue-ui-antdv/types.d.ts +70 -0
  146. package/dist/types/vue-ui-antdv/useTreeLoader.d.ts +21 -0
  147. package/dist/types/vue-ui-antdv/useTreeMotion.d.ts +9 -0
  148. package/dist/types/vue-ui-antdv/useUiTreeDrag.d.ts +32 -0
  149. package/dist/types/web-contracts/index.d.ts +75 -8
  150. package/dist/types/web-core/module/index.d.ts +1 -0
  151. package/dist/types/web-core/module/moduleContext.d.ts +15 -0
  152. package/dist/types/web-core/module/pageActionEntries.d.ts +21 -0
  153. package/dist/types/web-core/module/runtimeContext.d.ts +7 -3
  154. package/dist/types/web-core/module/staticModuleClient.d.ts +29 -6
  155. package/dist/workspaceViews-DI_1vYX9.js +3518 -0
  156. package/package.json +1 -1
  157. package/dist/MetadataOrchestrationView-BhtVwJII.js +0 -661
  158. package/dist/ModuleActionManagementView-DpZS-xAD.js +0 -597
  159. package/dist/RoleAuthorizationView-8lilhtMB.js +0 -646
  160. package/dist/RoleDetailWorkspaceView-CFha6JHn.js +0 -26
  161. package/dist/RoleManagementView-0_KDrzgh.js +0 -1948
  162. package/dist/platform-components-oRIsIoxu.js +0 -12371
  163. package/dist/types/dynamic-page-runtime/DynamicRecordDetailActions.vue.d.ts +0 -39
  164. package/dist/types/dynamic-page-runtime/dynamicModuleDetailStateModel.d.ts +0 -5
  165. package/dist/types/views/UserDetailContent.vue.d.ts +0 -32
  166. package/dist/types/views/UserManagementListView.vue.d.ts +0 -3
  167. package/dist/types/views/UserManagementView.vue.d.ts +0 -3
  168. package/dist/types/views/metadataOrchestrationWorkspaceView.d.ts +0 -6
  169. package/dist/types/views/useUserSessionRows.d.ts +0 -28
  170. package/dist/types/views/userDetailStateModel.d.ts +0 -9
  171. package/dist/types/views/userManagementRouteState.d.ts +0 -11
  172. package/dist/workspaceViews-D-RiJ64o.js +0 -9078
@@ -15,6 +15,7 @@ export type { UiRadioOption } from './components/UiRadioGroup.vue';
15
15
  export { default as UiTreeSelect } from './components/UiTreeSelect.vue';
16
16
  export type { UiTreeSelectNode } from './components/UiTreeSelect.vue';
17
17
  export { default as UiTooltip } from './components/UiTooltip.vue';
18
+ export { default as UiPopover } from './components/UiPopover.vue';
18
19
  export { default as UiThemeProvider } from './components/UiThemeProvider.vue';
19
20
  export { default as UiSwitch } from './components/UiSwitch.vue';
20
21
  export { default as UiMenu } from './components/UiMenu.vue';
@@ -42,4 +43,8 @@ export type { UiSidePanelScope } from './components/sidePanelHost';
42
43
  export type { UiTagListItem } from './components/UiTagList.vue';
43
44
  export { antDesignThemeOf, cssVariablesOf, defaultUiTheme, defaultUiThemeSkinId, uiThemeSkinById, uiThemeSkins, } from './theme';
44
45
  export type { UiSupportTheme, UiTheme, UiThemeSkin, UiThemeSkinId, UiThemeTone } from './theme';
45
- export type { UiConfirmOptions, UiDataTableColumn, UiDataTableKey, UiDataTablePagination, UiDataTableRecord, UiDataTableSelection, UiDropdownItem, UiMenuItem, UiRecordInlineAction, UiTabItem, UiTreeNode, UiTreeNodeAction, } from './types';
46
+ export type { UiConfirmOptions, UiDataTableColumn, UiDataTableKey, UiDataTablePagination, UiDataTableRecord, UiDataTableSelection, UiDropdownItem, UiMenuItem, UiRecordInlineAction, UiTabItem, UiTreeCheckEvent, UiTreeDisplayMode, UiTreeNodeEvent, UiDragSource, UiDropTarget, UiDropPosition, UiDropOperation, UiTreeBranchState, UiTreeLoadIntent, UiTreeChangeReason, UiTreeLoadReason, UiTreeLoadRequest, UiTreeLoadResult, UiTreeLoadStrategy, UiTreeNode, UiTreeNodeAction, UiTreeDropEvent, } from './types';
47
+ export { useUiDropTarget, useUiDragSource } from './useUiTreeDrag';
48
+ export { useTreeLoader as useTreeData } from './useTreeLoader';
49
+ export { default as UiTokenInput } from './components/UiTokenInput.vue';
50
+ export type { UiTokenInputToken } from './components/UiTokenInput.vue';
@@ -0,0 +1,18 @@
1
+ import type { UiTreeNode } from './types';
2
+ export interface TreeEntry {
3
+ node: UiTreeNode;
4
+ parent?: string;
5
+ index: number;
6
+ }
7
+ export declare function indexTree(nodes: readonly UiTreeNode[], flat?: boolean): Map<string, TreeEntry>;
8
+ export declare function mergeTreePage(existing: UiTreeNode[], incoming: UiTreeNode[]): UiTreeNode[];
9
+ export type TreeChange = {
10
+ key: string;
11
+ kind: 'enter' | 'leave' | 'move' | 'reparent' | 'update';
12
+ };
13
+ export declare function treeSnapshot(nodes: UiTreeNode[], flat?: boolean): Map<string, {
14
+ parent: string | undefined;
15
+ index: number;
16
+ content: string;
17
+ }>;
18
+ export declare function treeChanges(before: ReturnType<typeof treeSnapshot>, after: ReturnType<typeof treeSnapshot>): TreeChange[];
@@ -11,7 +11,11 @@ export interface UiDataTableColumn {
11
11
  }
12
12
  export interface UiDataTablePagination {
13
13
  pageSize: number;
14
+ current?: number;
15
+ total?: number;
14
16
  showSizeChanger?: boolean;
17
+ showQuickJumper?: boolean;
18
+ onChange?: (page: number, pageSize: number) => void;
15
19
  }
16
20
  export interface UiDataTableSelection {
17
21
  selectedRowKeys: UiDataTableKey[];
@@ -43,6 +47,8 @@ export type UiTreeNodeAction = UiRecordInlineAction;
43
47
  export interface UiTreeNode {
44
48
  key: string;
45
49
  title: string;
50
+ /** False keeps the node expandable before its children are loaded. */
51
+ isLeaf?: boolean;
46
52
  disabled?: boolean;
47
53
  secondary?: string;
48
54
  tag?: string;
@@ -50,6 +56,70 @@ export interface UiTreeNode {
50
56
  actions?: UiRecordInlineAction[];
51
57
  children?: UiTreeNode[];
52
58
  }
59
+ /** Adapter-neutral node activation event. The node remains a UI contract, not an Ant Tree node. */
60
+ export interface UiTreeNodeEvent {
61
+ node: UiTreeNode;
62
+ nativeEvent?: Event;
63
+ }
64
+ export type UiTreeDisplayMode = 'tree' | 'flat';
65
+ export interface UiTreeCheckEvent {
66
+ node: UiTreeNode;
67
+ checked: boolean;
68
+ checkedKeys: string[];
69
+ halfCheckedKeys: string[];
70
+ nativeEvent?: Event;
71
+ }
72
+ export type UiTreeLoadStrategy = 'managed' | 'controlled';
73
+ export type UiTreeLoadReason = 'expand' | 'refresh' | 'load-more';
74
+ export interface UiTreeLoadIntent {
75
+ node: UiTreeNode;
76
+ reason: UiTreeLoadReason;
77
+ cursor?: string;
78
+ }
79
+ /** Only the owner of the request creates and releases its cancellation signal. */
80
+ export interface UiTreeLoadRequest extends UiTreeLoadIntent {
81
+ requestId: string;
82
+ signal: AbortSignal;
83
+ }
84
+ export interface UiTreeLoadResult {
85
+ mode: 'replace' | 'append';
86
+ nodes: UiTreeNode[];
87
+ nextCursor?: string;
88
+ hasMore: boolean;
89
+ }
90
+ export interface UiTreeBranchState {
91
+ status: 'idle' | 'loading' | 'loaded' | 'error';
92
+ hasMore?: boolean;
93
+ cursor?: string;
94
+ error?: string;
95
+ failedRequest?: UiTreeLoadIntent;
96
+ }
97
+ export type UiDropPosition = 'before' | 'after' | 'inside';
98
+ export type UiDropOperation = 'copy' | 'move';
99
+ export interface UiDragSource {
100
+ instanceId: string;
101
+ node: UiTreeNode;
102
+ operations: readonly UiDropOperation[];
103
+ payload?: unknown;
104
+ payloadType?: string;
105
+ }
106
+ export type UiDropTarget = {
107
+ instanceId: string;
108
+ } & ({
109
+ kind: 'node';
110
+ node: UiTreeNode;
111
+ position: UiDropPosition;
112
+ } | {
113
+ kind: 'root';
114
+ position: 'inside';
115
+ });
116
+ export interface UiTreeDropEvent {
117
+ source: UiDragSource;
118
+ target: UiDropTarget;
119
+ operation: UiDropOperation;
120
+ nativeEvent?: Event;
121
+ }
122
+ export type UiTreeChangeReason = 'interaction' | 'filter' | 'reset';
53
123
  export interface UiConfirmOptions {
54
124
  title: string;
55
125
  content?: string;
@@ -0,0 +1,21 @@
1
+ import type { UiTreeNode, UiTreeLoadRequest, UiTreeLoadResult, UiTreeBranchState, UiTreeLoadIntent, UiTreeLoadReason } from './types';
2
+ interface Options {
3
+ nodes: () => UiTreeNode[];
4
+ controlled: () => boolean;
5
+ states: () => Readonly<Record<string, UiTreeBranchState>>;
6
+ loader: () => ((node: UiTreeNode, request: UiTreeLoadRequest) => Promise<UiTreeLoadResult>) | undefined;
7
+ version: () => unknown;
8
+ minimumDuration: () => number;
9
+ emit: (request: UiTreeLoadIntent) => void;
10
+ }
11
+ /** Managed requests and controlled intents never share cancellation or loaded bookkeeping. */
12
+ export declare function useTreeLoader(input: Pick<Options, 'nodes'> & Partial<Omit<Options, 'nodes'>>): {
13
+ nodes: import("vue").ComputedRef<UiTreeNode[]>;
14
+ states: import("vue").ComputedRef<Record<string, UiTreeBranchState>>;
15
+ stateOf: (key: string) => UiTreeBranchState;
16
+ request: (key: string, reason: UiTreeLoadReason, retry?: boolean) => Promise<void>;
17
+ release: (key: string) => void;
18
+ reset: () => void;
19
+ retry: (key: string) => Promise<void>;
20
+ };
21
+ export {};
@@ -0,0 +1,9 @@
1
+ import { type Ref } from 'vue';
2
+ import type { UiTreeNode, UiTreeChangeReason } from './types';
3
+ export declare function useTreeMotion(root: Ref<HTMLElement | undefined>, options: {
4
+ nodes: () => UiTreeNode[];
5
+ flat: () => boolean;
6
+ enabled: () => boolean;
7
+ duration: () => number;
8
+ reason: () => UiTreeChangeReason;
9
+ }): Ref<boolean, boolean>;
@@ -0,0 +1,32 @@
1
+ import { type Ref } from 'vue';
2
+ import type { UiDragSource, UiDropPosition, UiDropTarget, UiTreeDropEvent, UiDropOperation } from './types';
3
+ interface Surface {
4
+ root: HTMLElement;
5
+ resolve: (origin: Element, y: number, position?: UiDropPosition, source?: UiDragSource, x?: number) => UiDropTarget | undefined;
6
+ allow: (event: UiTreeDropEvent) => boolean;
7
+ operation?: (source: UiDragSource) => UiDropOperation;
8
+ drop: (event: UiTreeDropEvent) => void;
9
+ feedback: (target?: UiDropTarget, rejected?: boolean) => void;
10
+ /**
11
+ * A canvas-like editor can opt into an intentional drag boundary: after the pointer has entered
12
+ * this surface, leaving it abandons the transient placement instead of carrying a stale drop
13
+ * candidate across unrelated controls.
14
+ */
15
+ cancelWhenPointerLeaves?: boolean;
16
+ }
17
+ export declare const createUiTreeInstanceId: () => string;
18
+ /** Shared by trees, flat lists and non-tree drop surfaces. No browser payload leaks to consumers. */
19
+ export declare function useUiDropTarget(root: Ref<HTMLElement | undefined>, options: Omit<Surface, 'root' | 'feedback'>): {
20
+ hovered: import("vue").ShallowRef<UiDropTarget | undefined, UiDropTarget | undefined>;
21
+ rejected: Ref<boolean, boolean>;
22
+ draggingSource: import("vue").ComputedRef<UiDragSource | undefined>;
23
+ clear: () => void;
24
+ };
25
+ export declare function useUiDragSource(root: Ref<HTMLElement | undefined>, instanceId: string, source: (key: string) => UiDragSource | undefined, callbacks: {
26
+ start: (source: UiDragSource) => void;
27
+ end: (cancelled: boolean) => void;
28
+ }): {
29
+ begin: (key: string, event: MouseEvent | KeyboardEvent) => void;
30
+ draggingKey: import("vue").ComputedRef<string | undefined>;
31
+ };
32
+ export {};
@@ -84,7 +84,12 @@ export interface WebBusinessNotification {
84
84
  content: string;
85
85
  dismissible: boolean;
86
86
  actions: WebBusinessNotificationAction[];
87
+ /** Optional standard card accent. Omit it to use the neutral platform presentation. */
88
+ tone?: WebBusinessNotificationTone;
89
+ /** The business fact's occurrence time, displayed in the workbench time zone when supplied. */
90
+ occurredAt?: string;
87
91
  }
92
+ export type WebBusinessNotificationTone = 'default' | 'success' | 'danger';
88
93
  export type WebBusinessNotificationAction = WebBusinessNotificationNavigateAction | WebBusinessNotificationRecordAction;
89
94
  export interface WebBusinessNotificationNavigateAction {
90
95
  kind: 'navigate';
@@ -129,6 +134,8 @@ export interface WebTreeNode<T> {
129
134
  * them to their own icon implementations.
130
135
  */
131
136
  export interface RecordInlineAction {
137
+ /** Optional single-level menu, rendered in the same stable inline action slot. */
138
+ items?: Array<Pick<RecordInlineAction, 'key' | 'title' | 'disabled' | 'danger'>>;
132
139
  key: string;
133
140
  /** Standard record action whose availability is resolved for the rendered record. */
134
141
  actionCode?: string;
@@ -140,7 +147,7 @@ export interface RecordInlineAction {
140
147
  disabledReason?: string;
141
148
  danger?: boolean;
142
149
  }
143
- export type RecordInlineActionIconName = 'app' | 'check' | 'close' | 'delete' | 'down' | 'edit' | 'export' | 'filter' | 'help' | 'lock' | 'notification' | 'plus' | 'power' | 'reload' | 'save' | 'search' | 'settings';
150
+ export type RecordInlineActionIconName = 'app' | 'check' | 'close' | 'delete' | 'down' | 'edit' | 'export' | 'eye' | 'eye-off' | 'filter' | 'help' | 'lock' | 'notification' | 'plus' | 'power' | 'reload' | 'save' | 'search' | 'settings';
144
151
  export interface CurrentUser {
145
152
  userId: string;
146
153
  username?: string;
@@ -258,6 +265,8 @@ export interface PageBootstrapActionBlock {
258
265
  key?: string;
259
266
  actionCode: string;
260
267
  title?: string;
268
+ /** Business importance only; card shells decide direct display or “更多”. */
269
+ importance?: 'PRIMARY' | 'STANDARD' | 'SECONDARY';
261
270
  position?: string;
262
271
  targetUiConfigId?: string;
263
272
  submitPath?: string;
@@ -382,6 +391,8 @@ export interface ResolvedDetailRelationListField {
382
391
  title?: string;
383
392
  fieldForm?: string;
384
393
  fieldUiControlAlias?: string;
394
+ /** Source-neutral scalar value fact used by relation previews and portable list renderers. */
395
+ valueType?: ViewFieldValueType | string;
385
396
  width?: number;
386
397
  align?: 'left' | 'center' | 'right' | string;
387
398
  maxDisplayLines?: number;
@@ -626,6 +637,8 @@ export interface QuerySchemaField {
626
637
  defaultOperator?: QueryOperator;
627
638
  quickSearch?: boolean;
628
639
  sortable?: boolean;
640
+ /** Explicit field-domain binding; distinguishes options from reference title companions. */
641
+ optionBinding?: OptionBindingDescriptor;
629
642
  optionTitleField?: string;
630
643
  }
631
644
  export interface QuerySchemaQuickSearch {
@@ -665,7 +678,7 @@ export interface UiFormula {
665
678
  /** Versioned program compiled by FormulaEngine. The browser executes it locally and never parses expression. */
666
679
  export interface FormulaProgram {
667
680
  schemaVersion: number;
668
- profile: 'WEB_UI' | 'FORM_COMPUTE';
681
+ profile: 'WEB_UI' | 'PAGE_TEXT' | 'FORM_COMPUTE' | 'FORM_VALIDATION';
669
682
  root: FormulaNode;
670
683
  referencedFields: string[];
671
684
  }
@@ -777,6 +790,8 @@ export interface ResolvedReferenceFieldDescriptor {
777
790
  candidateDependencies?: ReferenceCandidateDependency[];
778
791
  /** Read-side title projection for this scalar reference, when supplied by the server. */
779
792
  titleField?: string;
793
+ /** Target fields mapped by metadata to read-only source-record display projections. */
794
+ displayProjections?: ResolvedReferenceDisplayProjectionDescriptor[];
780
795
  /**
781
796
  * Explicitly authorized target-field paths available after choosing this ONE reference.
782
797
  * Paths are relative to this reference field; the form runtime prefixes them with the
@@ -791,6 +806,10 @@ export interface ResolvedReferenceFieldDescriptor {
791
806
  export interface ResolvedReferenceSelectionProjectionDescriptor {
792
807
  path: string[];
793
808
  }
809
+ export interface ResolvedReferenceDisplayProjectionDescriptor {
810
+ targetField: string;
811
+ outputField: string;
812
+ }
794
813
  export interface ReferenceCandidateDependency {
795
814
  sourceField: string;
796
815
  targetField: string;
@@ -832,6 +851,14 @@ export interface ResolvedFormComputeRuleDescriptor {
832
851
  triggerFields: string[];
833
852
  writePolicy: 'ALWAYS';
834
853
  }
854
+ /** Server-issued browser pre-save validation; the server enforces the same rule on mutation. */
855
+ export interface ResolvedFormValidationRuleDescriptor {
856
+ code: string;
857
+ program: FormulaProgram;
858
+ inputFields: string[];
859
+ targetField?: string;
860
+ message: string;
861
+ }
835
862
  export interface ResolvedViewDescriptor {
836
863
  viewCode: string;
837
864
  viewKind: ModuleViewKind;
@@ -842,6 +869,7 @@ export interface ResolvedViewDescriptor {
842
869
  sourceUiConfigId?: string;
843
870
  formGroups?: FormGroupDescriptor[];
844
871
  formComputeRules?: ResolvedFormComputeRuleDescriptor[];
872
+ formValidationRules?: ResolvedFormValidationRuleDescriptor[];
845
873
  }
846
874
  export type ModulePageTemplate = 'FLAT_MANAGEMENT' | 'LIST_DETAIL_CARD' | 'TREE_MANAGEMENT';
847
875
  export interface ResolvedPageExplorerDescriptor {
@@ -877,10 +905,10 @@ export interface ResolvedPageNavigatorLevelDescriptor {
877
905
  */
878
906
  sourceScope?: 'NONE' | 'CURRENT_TENANT';
879
907
  /** When present, the navigator source exposes its own standard CRUD affordances in place. */
880
- management?: ResolvedPageNavigatorManagementDescriptor;
908
+ management?: ResolvedPageNavigatorManagementDescriptor | null;
881
909
  }
882
910
  export interface ResolvedPageContextBindingDescriptor {
883
- source: 'SESSION' | 'NAVIGATOR';
911
+ source: 'SESSION' | 'NAVIGATOR' | 'RESOLVED_SELECTION';
884
912
  sourceKey: string;
885
913
  target: 'LIST_QUERY' | 'NAVIGATOR_QUERY' | 'FORM_DEFAULT' | 'PICKER_QUERY' | 'MUTATION_CONSTRAINT';
886
914
  targetKey: string;
@@ -900,18 +928,29 @@ export interface ResolvedPageNavigatorManagementDescriptor {
900
928
  export interface ResolvedPageListDescriptor {
901
929
  searchPlaceholder: string;
902
930
  fields: ResolvedViewDescriptor;
931
+ /** Main-content header copy; PAGE_TEXT programs run only against the host display context. */
932
+ title?: ResolvedPageTextDescriptor;
933
+ subtitle?: ResolvedPageTextDescriptor;
903
934
  /** Read-only placements of declared aggregate relations beneath an expanded list row. */
904
935
  relationExpansions?: ResolvedPageListRelationExpansionDescriptor[];
905
936
  persistentQueryControls?: ResolvedPageListPersistentQueryControlDescriptor[];
906
937
  querySummaries?: ResolvedPageListQuerySummaryDescriptor[];
907
938
  }
939
+ export interface ResolvedPageTextDescriptor {
940
+ text?: string;
941
+ program?: FormulaProgram;
942
+ }
908
943
  export interface ResolvedPageListQuerySummaryDescriptor {
909
944
  key: string;
910
945
  title: string;
911
- source: 'MATCHED_COUNT' | 'CONTRIBUTOR';
946
+ source: 'MATCHED_COUNT' | 'SUM' | 'CONTRIBUTOR' | 'GROUPED';
947
+ fieldName?: string;
912
948
  contributorKey?: string;
949
+ groupByField?: string;
950
+ groupByTitle?: string;
951
+ sumFieldTitle?: string;
913
952
  }
914
- /** A persistent boolean query control rendered after search and before advanced filtering. */
953
+ /** A persistent boolean query control rendered before search; advanced filtering follows search. */
915
954
  export interface ResolvedPageListPersistentQueryControlDescriptor {
916
955
  externalCriteriaKey: string;
917
956
  title: string;
@@ -937,6 +976,8 @@ export interface ResolvedPageDetailWorkspaceViewDescriptor {
937
976
  type: string;
938
977
  }
939
978
  export interface ResolvedModulePageDescriptor {
979
+ /** Omitted uses the module default; empty disables page quick search. */
980
+ quickSearchFields?: string[];
940
981
  template: ModulePageTemplate;
941
982
  explorer?: ResolvedPageExplorerDescriptor;
942
983
  navigator?: ResolvedPageNavigatorDescriptor;
@@ -944,8 +985,24 @@ export interface ResolvedModulePageDescriptor {
944
985
  /** Declared action-contribution tree rendered as the main TREE_MANAGEMENT resource. */
945
986
  treeResource?: ResolvedPageTreeResourceDescriptor;
946
987
  detail: ResolvedPageDetailDescriptor;
988
+ /** Actions placed only into platform-owned page regions. */
989
+ actions?: ResolvedPageActionDescriptor[];
990
+ managedActions?: boolean;
947
991
  traits: ('STANDARD_CRUD' | 'ENABLED_STATUS' | 'RECYCLE_BIN' | 'RESPONSIVE_DETAIL_SURFACE')[];
948
992
  }
993
+ /** Compiled transport for an action that explicitly supports a standard page surface. */
994
+ export interface PageActionInvocation {
995
+ method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
996
+ path: string;
997
+ input: 'NONE' | 'FORM_RECORD';
998
+ }
999
+ export interface ResolvedPageActionDescriptor {
1000
+ title?: string;
1001
+ operation?: string;
1002
+ actionCode: string;
1003
+ anchor: 'PAGE' | 'DETAIL' | 'FORM';
1004
+ invocation?: PageActionInvocation;
1005
+ }
949
1006
  export interface ResolvedPageTreeResourceDescriptor {
950
1007
  resource: string;
951
1008
  scopeNavigatorKey: string;
@@ -956,6 +1013,8 @@ export interface ResolvedPageTreeResourceDescriptor {
956
1013
  title: string;
957
1014
  emptyDescription: string;
958
1015
  createTitle: string;
1016
+ /** Persisted fields that define the resource's own server-authoritative sort partition. */
1017
+ sortPartitionFields: string[];
959
1018
  }
960
1019
  export interface ResolvedUiActionConfirmationDescriptor {
961
1020
  mode: 'typedText';
@@ -1261,6 +1320,8 @@ export interface PlatformModule extends StandardEnabledTreeEntity {
1261
1320
  }
1262
1321
  /** A governed operation exposed by one platform module. */
1263
1322
  export interface PlatformModuleAction extends StandardEnabledSortableEntity {
1323
+ bindingPending?: boolean;
1324
+ formSupported?: boolean;
1264
1325
  moduleAlias?: string;
1265
1326
  actionCode?: string;
1266
1327
  entityAlias?: string;
@@ -1316,7 +1377,8 @@ export interface ModuleMetadataRelation extends StandardSortableEntity {
1316
1377
  moduleAlias?: string;
1317
1378
  metadataId?: string;
1318
1379
  relationAlias?: string;
1319
- relationRole?: 'MAIN' | 'CHILD';
1380
+ /** Runtime APIs serialize Java code enums using their lower-case code; upper-case remains accepted for fixtures. */
1381
+ relationRole?: 'main' | 'child' | 'MAIN' | 'CHILD';
1320
1382
  parentMetadataId?: string;
1321
1383
  foreignKey?: string;
1322
1384
  autoPopulate?: boolean;
@@ -1339,6 +1401,7 @@ export interface FieldSpec extends StandardEnabledSortableEntity {
1339
1401
  queryOperators?: string[];
1340
1402
  defaultUiControlAlias?: string;
1341
1403
  uiControlAliases?: string[];
1404
+ safeTargetFieldSpecAliases?: string[];
1342
1405
  }
1343
1406
  export interface FieldUiControl extends StandardEnabledSortableEntity {
1344
1407
  alias?: string;
@@ -1384,9 +1447,13 @@ export interface DictionaryItem extends StandardEnabledTreeEntity {
1384
1447
  categoryAlias?: string;
1385
1448
  code?: string;
1386
1449
  }
1387
- export interface TreeSortRequest {
1450
+ /** Relative placement for a sortable flat record collection. */
1451
+ export interface SortRequest {
1388
1452
  previousId?: string | null;
1389
1453
  nextId?: string | null;
1454
+ }
1455
+ /** Relative placement for a sortable tree record collection. */
1456
+ export interface TreeSortRequest extends SortRequest {
1390
1457
  parentId?: string | null;
1391
1458
  }
1392
1459
  export type FieldKind = 'input' | 'select' | 'dictionary-select' | 'reference-select';
@@ -4,3 +4,4 @@ export * from './staticModuleClient';
4
4
  export type { ModuleActionState, ModuleRecordActionAvailability, ModuleRuntimeAction, ModuleRuntimeContext, ModuleRuntimeContextState, } from './runtimeContext';
5
5
  export type { ModuleAbilityClients, ModuleAbilities } from './abilities';
6
6
  export * from './moduleContext';
7
+ export * from './pageActionEntries';
@@ -1,3 +1,4 @@
1
+ import { type PropType } from 'vue';
1
2
  import type { HttpClient } from '../http';
2
3
  import { type ModuleAbilities } from './abilities';
3
4
  import { type ModuleActionState, type ModuleRecordActionAvailability, type ModuleRuntimeAction, type ModuleRuntimeContextState } from './runtimeContext';
@@ -34,6 +35,20 @@ export declare function createModuleContext<TRecord>(options: ModuleContextOptio
34
35
  export declare function createModuleTreeContext<TRecord>(options: ModuleContextOptions): ModuleTreeContext<TRecord>;
35
36
  export declare function useModuleContext<TRecord>(options?: Partial<ModuleContextOptions>): ModuleContext<TRecord>;
36
37
  export declare function useModuleTreeContext<TRecord>(options?: Partial<ModuleContextOptions>): ModuleTreeContext<TRecord>;
38
+ /** An immutable transport boundary; remount it to begin a separate business data session. */
39
+ export declare const ModuleHttpProvider: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
40
+ http: {
41
+ type: PropType<HttpClient>;
42
+ required: true;
43
+ };
44
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
45
+ [key: string]: any;
46
+ }>[] | undefined, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
47
+ http: {
48
+ type: PropType<HttpClient>;
49
+ required: true;
50
+ };
51
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
37
52
  export declare const ModuleContextProvider: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
38
53
  moduleAlias: {
39
54
  type: StringConstructor;
@@ -0,0 +1,21 @@
1
+ /** Shared interaction vocabulary for page design and business rendering. */
2
+ export declare function pageActionIntent(code: string, anchor: string): {
3
+ operation: string;
4
+ title: string;
5
+ mode?: "create" | "edit";
6
+ };
7
+ export declare function pageActionEntryTitle(entry: {
8
+ actionCode: string;
9
+ anchor: string;
10
+ title?: string;
11
+ }): string;
12
+ export declare function pageActionEntryVisible(entry: {
13
+ actionCode: string;
14
+ anchor: string;
15
+ hidden?: boolean;
16
+ operation?: string;
17
+ }, mode: 'view' | 'create' | 'edit'): boolean;
18
+ export declare function pageActionEntryDescription(entry: {
19
+ actionCode: string;
20
+ anchor: string;
21
+ }): string;
@@ -1,8 +1,11 @@
1
- import type { ResolvedModuleUiDescriptor } from '../../web-contracts/index';
1
+ import type { PageActionInvocation, ResolvedModuleUiDescriptor } from '../../web-contracts/index';
2
2
  import { type AppError } from '../errors';
3
3
  import type { HttpClient } from '../http';
4
4
  import type { ModuleAbilityCode } from './abilityCodes';
5
5
  export interface ModuleRuntimeAction {
6
+ bindingPending?: boolean;
7
+ formSupported?: boolean;
8
+ invocations?: Partial<Record<'PAGE' | 'DETAIL' | 'FORM', PageActionInvocation>>;
6
9
  actionCode: string;
7
10
  permissionActionCode?: string;
8
11
  title?: string;
@@ -38,6 +41,7 @@ export interface ModuleRecordActionDecision {
38
41
  }
39
42
  export interface ModuleRuntimeContext {
40
43
  moduleAlias: string;
44
+ tenantRequired?: boolean;
41
45
  title?: string;
42
46
  moduleKind?: 'STATIC' | 'DYNAMIC';
43
47
  entryType?: 'module' | 'route' | 'link';
@@ -45,10 +49,10 @@ export interface ModuleRuntimeContext {
45
49
  entryExternalUrl?: string;
46
50
  mainEntityAlias?: string;
47
51
  capabilities: string[];
52
+ /** Persisted fields that define the server-authoritative sort partition. */
53
+ sortPartitionFields?: string[];
48
54
  abilities?: string[];
49
55
  actions: ModuleRuntimeAction[];
50
- /** Read-only projections this module deliberately exposes for page navigation. */
51
- navigatorSourceCapabilities?: Array<'REFERENCE_QUERY' | 'REFERENCE_TREE'>;
52
56
  uiDescriptor?: ResolvedModuleUiDescriptor;
53
57
  }
54
58
  export interface ModuleRuntimeContextState {
@@ -1,4 +1,4 @@
1
- import type { TreeSortRequest, WebActionResultFacts, WebActionResultEnvelope, QuerySchema, WebListResponse, WebPageResponse, WebQueryRequest, WebTreeNode } from '../../web-contracts/index';
1
+ import type { SortRequest, TreeSortRequest, WebActionResultFacts, WebActionResultEnvelope, QuerySchema, WebListResponse, WebPageResponse, WebQueryRequest, WebTreeNode } from '../../web-contracts/index';
2
2
  import type { HttpClient } from '../http';
3
3
  export interface StaticRecordMutationResult<TRecord> extends WebActionResultFacts {
4
4
  record: TRecord;
@@ -21,6 +21,8 @@ export interface ModuleCrudClient<TRecord> {
21
21
  delete(id: string, request: RecordActionRequest): Promise<StaticCountMutationResult>;
22
22
  enable(id: string, request: RecordActionRequest): Promise<StaticCountMutationResult>;
23
23
  disable(id: string, request: RecordActionRequest): Promise<StaticCountMutationResult>;
24
+ /** Optional capability: plain CRUD consumers must not be forced to implement sorting. */
25
+ sort?(id: string, request: SortRequest): Promise<StaticCountMutationResult>;
24
26
  }
25
27
  /** Source-neutral tree extension for a platform module. */
26
28
  export interface ModuleTreeClient<TRecord> extends ModuleCrudClient<TRecord> {
@@ -32,7 +34,12 @@ export interface ModuleTreeClient<TRecord> extends ModuleCrudClient<TRecord> {
32
34
  subtree(id: string, options?: {
33
35
  includeSelf?: boolean;
34
36
  }): Promise<WebListResponse<WebTreeNode<TRecord>>>;
35
- sort(id: string, request: TreeSortRequest): Promise<StaticCountMutationResult>;
37
+ sort(id: string, request: TreeSortRequest, options?: TreeSortOptions): Promise<StaticCountMutationResult>;
38
+ }
39
+ export interface TreeSortOptions {
40
+ externalQueryValues?: Record<string, unknown>;
41
+ navigatorHostModuleAlias?: string;
42
+ navigatorTargetLevelKey?: string;
36
43
  }
37
44
  export interface ModuleEnableClient {
38
45
  enable(id: string, request: RecordActionRequest): Promise<StaticCountMutationResult>;
@@ -75,11 +82,27 @@ export interface NavigatorReferenceRequestContext {
75
82
  targetLevelKey: string;
76
83
  }
77
84
  export declare function createStaticResourceTreeClient<TRecord>(http: HttpClient, resourcePath: string): ModuleTreeClient<TRecord>;
78
- /** @deprecated Use ModuleCrudClient. Remove after static-prefixed consumer imports migrate. */
85
+ /** @deprecated Use ModuleCrudClient. Retained for published consumer compatibility. */
79
86
  export type StaticModuleCrudClient<TRecord> = ModuleCrudClient<TRecord>;
80
- /** @deprecated Use ModuleTreeClient. Remove after static-prefixed consumer imports migrate. */
87
+ /** @deprecated Use ModuleTreeClient. Retained for published consumer compatibility. */
81
88
  export type StaticModuleTreeClient<TRecord> = ModuleTreeClient<TRecord>;
82
- /** @deprecated Use createModuleCrudClient. Remove after static-prefixed consumer imports migrate. */
89
+ /** @deprecated Use createModuleCrudClient. Retained for published consumer compatibility. */
83
90
  export declare const createStaticModuleCrudClient: typeof createModuleCrudClient;
84
- /** @deprecated Use createModuleTreeClient. Remove after static-prefixed consumer imports migrate. */
91
+ /** @deprecated Use createModuleTreeClient. Retained for published consumer compatibility. */
85
92
  export declare const createStaticModuleTreeClient: typeof createModuleTreeClient;
93
+ /**
94
+ * Dynamic records use a typed `{ id, version, values, children }` wire envelope while static
95
+ * records already publish their fields at the root. The shared module client is the only place
96
+ * that should bridge this transport difference: every page surface then consumes one flat record
97
+ * contract, including aggregate children, and submits that same accepted shape back to the
98
+ * dynamic deserializer.
99
+ */
100
+ export declare function normalizeModuleRecord<TRecord>(record: TRecord): TRecord;
101
+ /**
102
+ * Normalizes a page response at the source-neutral module transport boundary.
103
+ *
104
+ * <p>Association query contracts use their server-issued route directly instead of the standard
105
+ * module CRUD path, but they still return the same dynamic record envelope. Keeping this helper
106
+ * public lets those descriptor-driven surfaces reuse the one normalization rule.</p>
107
+ */
108
+ export declare function normalizeModulePageResponse<TRecord>(response: WebPageResponse<TRecord>): WebPageResponse<TRecord>;