@adaptabletools/adaptable 17.0.0-canary.6 → 17.0.0-canary.7

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptabletools/adaptable",
3
- "version": "17.0.0-canary.6",
3
+ "version": "17.0.0-canary.7",
4
4
  "description": "Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements",
5
5
  "keywords": [
6
6
  "web-components",
@@ -1,2 +1,2 @@
1
- declare const _default: 1704985790545;
1
+ declare const _default: 1705046977618;
2
2
  export default _default;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = 1704985790545;
3
+ exports.default = 1705046977618;
@@ -295,6 +295,7 @@ export interface IAdaptable {
295
295
  destroyApi?: boolean;
296
296
  }): void;
297
297
  setRowGroupColumns(columnIds: string[]): void;
298
+ getAgGridAllGridColumns(): Column<any>[];
298
299
  clearRowGroupColumns(): void;
299
300
  expandAllRowGroups(): void;
300
301
  closeAllRowGroups(): void;
@@ -9,7 +9,7 @@ export interface EditOptions<TData = any> {
9
9
  /**
10
10
  * Function to validate AdapTable data edits on Server
11
11
  */
12
- validateOnServer?: (serverValidationContext: ServerValidationContext<TData>) => Promise<ValidationResult>;
12
+ validateOnServer?: (serverValidationContext: ServerValidationContext<TData>) => Promise<ServerValidationResult>;
13
13
  /**
14
14
  * Whether to display message after Server Validation runs
15
15
  *
@@ -29,26 +29,26 @@ export interface EditOptions<TData = any> {
29
29
  /**
30
30
  * Used for Server Validation ie. after an edit in AG Grid which must be checked on Server
31
31
  */
32
- export interface ValidationResult {
32
+ export interface ServerValidationResult {
33
33
  /**
34
34
  * Header to diplay with validation
35
35
  * @defaultValue 'Server Validation Message',
36
36
  */
37
- ValidationHeader?: string;
37
+ validationHeader?: string;
38
38
  /**
39
39
  * Message to diplay with validation
40
40
  */
41
- ValidationMessage?: string;
41
+ validationMessage?: string;
42
42
  /**
43
43
  * Cell Value to use for after Server Validation
44
44
  */
45
- NewValue?: any;
45
+ newCellValue?: any;
46
46
  /**
47
47
  * Type of Message to Display
48
48
  * @defaultValue Info
49
49
  *
50
50
  */
51
- MessageType?: AdaptableMessageType;
51
+ messageType?: AdaptableMessageType;
52
52
  }
53
53
  /**
54
54
  * Custom Operation used in Smart Edit Module
@@ -3,11 +3,11 @@
3
3
  */
4
4
  export interface GridFilterOptions<TData = any> {
5
5
  /**
6
- * Where Grid Filter can be edited - Expression Editor, Query Builder or Both
6
+ * Which UI Components can be used to edit a Grid Filter: Expression Editor, Query Builder or Both
7
7
  *
8
- * @defaultValue 'Both'
8
+ * @defaultValue ['ExpressionEditor', 'QueryBuilder']
9
9
  */
10
- availableFilterEditors?: 'ExpressionEditor' | 'QueryBuilder' | 'Both';
10
+ availableFilterEditors?: GridFilterEditors;
11
11
  /**
12
12
  * Clears a saved Grid Filter when AdapTable loads
13
13
  *
@@ -16,3 +16,8 @@ export interface GridFilterOptions<TData = any> {
16
16
  */
17
17
  clearGridFilterOnStartUp?: boolean;
18
18
  }
19
+ export type GridFilterEditors = GridFilterEditor[];
20
+ /**
21
+ * List of all the Module buttons Adaptable provides - each Module has a popup for which this is a shortcut button
22
+ */
23
+ export type GridFilterEditor = 'ExpressionEditor' | 'QueryBuilder';
@@ -23,11 +23,11 @@ export interface GridFilterApi {
23
23
  */
24
24
  clearGridFilter(): void;
25
25
  /**
26
- * Opens the Expression Editor
26
+ * Opens the AdapTableQL UI Components (Expression Editor & Query Builder)
27
27
  *
28
28
  * @param expression current Grid Filter expression
29
29
  */
30
- openExpressionEditorForGridFilter(expression?: string): void;
30
+ openUIEditorForGridFilter(expression?: string): void;
31
31
  /**
32
32
  * Suspends the Grid Filter
33
33
  */
@@ -10,7 +10,7 @@ export declare class GridFilterApiImpl extends ApiBase implements GridFilterApi
10
10
  getCurrentGridFilterExpression(): string | undefined;
11
11
  setGridFilterExpression(filter: string): void;
12
12
  clearGridFilter(): void;
13
- openExpressionEditorForGridFilter(expression?: string): void;
13
+ openUIEditorForGridFilter(expression?: string): void;
14
14
  suspendGridFilter(): void;
15
15
  unSuspendGridFilter(): void;
16
16
  }
@@ -26,7 +26,7 @@ class GridFilterApiImpl extends ApiBase_1.ApiBase {
26
26
  clearGridFilter() {
27
27
  this.dispatchAction(LayoutRedux.LayoutGridFilterClear());
28
28
  }
29
- openExpressionEditorForGridFilter(expression) {
29
+ openUIEditorForGridFilter(expression) {
30
30
  const preparedQuery = expression !== null && expression !== void 0 ? expression : this.getCurrentGridFilterExpression();
31
31
  this.getAdaptableApi().internalApi.showPopupWindow({
32
32
  id: windowFactory_1.WINDOW_GRID_FILTER_EDITOR,
@@ -62,16 +62,15 @@ class LayoutInternalApi extends ApiBase_1.ApiBase {
62
62
  let layoutState = this.getLayoutApi().getLayoutState();
63
63
  const isLayoutDefined = (layoutName) => !!layoutState.Layouts.filter((layout) => layout.Name === layoutName)[0];
64
64
  let defaultLayoutColumns = gridState.Columns.filter((column) => column.visible);
65
- const columnsMap = gridState.Columns.reduce((acc, col) => {
66
- acc[col.columnId] = col;
67
- return acc;
68
- }, {});
69
65
  let shouldCreateDefaultLayout = this.getLayoutOptions().createDefaultLayout;
70
66
  if (!layoutState.Layouts || !layoutState.Layouts.length) {
71
67
  shouldCreateDefaultLayout = true;
72
68
  }
73
69
  if (shouldCreateDefaultLayout) {
74
70
  if (!layoutState.Layouts || !isLayoutDefined(GeneralConstants_1.DEFAULT_LAYOUT)) {
71
+ // augogroup columns are not in columns list
72
+ // the code that adds column ok grid state explicitly ignores autoColumns
73
+ const allGridColumns = this.adaptable.getAgGridAllGridColumns();
75
74
  let defaultLayout = ObjectFactory_1.default.CreateEmptyLayout({
76
75
  Name: GeneralConstants_1.DEFAULT_LAYOUT,
77
76
  Columns: defaultLayoutColumns.map((c) => c.columnId),
@@ -81,9 +80,10 @@ class LayoutInternalApi extends ApiBase_1.ApiBase {
81
80
  }
82
81
  return acc;
83
82
  }, {}),
84
- PinnedColumnsMap: defaultLayoutColumns.reduce((acc, col) => {
85
- if (col.pinned) {
86
- acc[col.columnId] = col.pinned;
83
+ PinnedColumnsMap: allGridColumns.reduce((acc, col) => {
84
+ const pinned = col.getPinned();
85
+ if (pinned) {
86
+ acc[col.getColId()] = pinned === true ? 'left' : pinned;
87
87
  }
88
88
  return acc;
89
89
  }, {}),
@@ -225,7 +225,7 @@ exports.DefaultAdaptableOptions = {
225
225
  showSuspendFilterButton: false,
226
226
  },
227
227
  gridFilterOptions: {
228
- availableFilterEditors: 'Both',
228
+ availableFilterEditors: ['ExpressionEditor', 'QueryBuilder'],
229
229
  clearGridFilterOnStartUp: false,
230
230
  },
231
231
  predicateOptions: {
@@ -99,29 +99,29 @@ class ValidationService {
99
99
  .validateOnServer(serverValidationContext)
100
100
  .then((validationResult) => {
101
101
  var _a, _b;
102
- if (validationResult.NewValue === undefined) {
103
- validationResult.NewValue = cellDataChangedInfo.newValue;
102
+ if (validationResult.newCellValue === undefined) {
103
+ validationResult.newCellValue = cellDataChangedInfo.newValue;
104
104
  }
105
105
  // If they have changed the return value then we should update the grid, log the function change
106
106
  // otherwise the value will persist
107
- if (validationResult.NewValue !== cellDataChangedInfo.newValue) {
108
- cellDataChangedInfo.newValue = validationResult.NewValue;
107
+ if (validationResult.newCellValue !== cellDataChangedInfo.newValue) {
108
+ cellDataChangedInfo.newValue = validationResult.newCellValue;
109
109
  // this.adaptable.setValue(cellDataChangedInfo, false);
110
110
  const row = (_a = cellDataChangedInfo.rowNode) === null || _a === void 0 ? void 0 : _a.data;
111
111
  if (!row) {
112
112
  return;
113
113
  }
114
- row[(_b = this.adaptableApi.columnApi.internalApi.getAgGridColumnFieldForAdaptableColumn(cellDataChangedInfo.column.columnId)) !== null && _b !== void 0 ? _b : cellDataChangedInfo.column.columnId] = validationResult.NewValue;
114
+ row[(_b = this.adaptableApi.columnApi.internalApi.getAgGridColumnFieldForAdaptableColumn(cellDataChangedInfo.column.columnId)) !== null && _b !== void 0 ? _b : cellDataChangedInfo.column.columnId] = validationResult.newCellValue;
115
115
  this.adaptableApi.gridApi.updateGridData([row]);
116
- if (StringExtensions_1.default.IsNotNullOrEmpty(validationResult.ValidationMessage) &&
116
+ if (StringExtensions_1.default.IsNotNullOrEmpty(validationResult.validationMessage) &&
117
117
  this.adaptableApi.optionsApi.getEditOptions().displayServerValidationMessages) {
118
- const validationHeader = validationResult.ValidationHeader
119
- ? validationResult.ValidationHeader
118
+ const validationHeader = validationResult.validationHeader
119
+ ? validationResult.validationHeader
120
120
  : GeneralConstants_1.SERVER_VALIDATION_HEADER;
121
- const messageType = validationResult.MessageType
122
- ? validationResult.MessageType
121
+ const messageType = validationResult.messageType
122
+ ? validationResult.messageType
123
123
  : GeneralConstants_1.SERVER_VALIDATION_MESSAGE_TYPE;
124
- this.adaptableApi.alertApi.showAlert(validationHeader, validationResult.ValidationMessage, messageType);
124
+ this.adaptableApi.alertApi.showAlert(validationHeader, validationResult.validationMessage, messageType);
125
125
  }
126
126
  }
127
127
  config.onServerValidationCompleted();
@@ -8,6 +8,7 @@ const DropdownButton_1 = tslib_1.__importDefault(require("../../components/Dropd
8
8
  const FieldWrap_1 = tslib_1.__importDefault(require("../../components/FieldWrap"));
9
9
  const icons_1 = require("../../components/icons");
10
10
  const Input_1 = tslib_1.__importDefault(require("../../components/Input"));
11
+ const StringExtensions_1 = tslib_1.__importDefault(require("../../Utilities/Extensions/StringExtensions"));
11
12
  const ButtonClear_1 = require("../Components/Buttons/ButtonClear");
12
13
  const ButtonExpand_1 = require("../Components/Buttons/ButtonExpand");
13
14
  const ButtonInvalid_1 = require("../Components/Buttons/ButtonInvalid");
@@ -33,9 +34,10 @@ const QueryViewPanelComponent = (props) => {
33
34
  return props.viewType === 'Toolbar' ? (React.createElement(FieldWrap_1.default, { marginRight: 1, width: 500 },
34
35
  buttonExpand,
35
36
  React.createElement(Input_1.default, { disabled: isSuspended || gridFilterAccessLevel == 'ReadOnly', type: "text", "data-name": "grid-filter-input", placeholder: "Grid Filter", spellCheck: false, value: expression, onChange: (x) => setExpression(x.target.value), style: { fontFamily: 'monospace', fontSize: 12 } }),
36
- isExpressionValid ? (React.createElement(ButtonPlay_1.ButtonPlay, { onClick: () => runQuery(), tooltip: '', accessLevel: gridFilterAccessLevel, variant: "text", tone: "neutral", disabled: isSuspended || expression == '' || expression == (gridFilter === null || gridFilter === void 0 ? void 0 : gridFilter.Expression), marginRight: 1 })) : (React.createElement(ButtonInvalid_1.ButtonInvalid, { variant: "text", tone: "neutral", tooltip: "Invalid Grid Filter", marginRight: 1 })),
37
+ isExpressionValid && (React.createElement(ButtonPlay_1.ButtonPlay, { onClick: () => runQuery(), tooltip: '', accessLevel: gridFilterAccessLevel, variant: "text", tone: "neutral", disabled: isSuspended || expression == '' || expression == (gridFilter === null || gridFilter === void 0 ? void 0 : gridFilter.Expression), marginRight: 1 })),
38
+ gridFilter && !isExpressionValid && (React.createElement(ButtonInvalid_1.ButtonInvalid, { variant: "text", tone: "neutral", tooltip: "Invalid Grid Filter", marginRight: 1 })),
37
39
  ' ',
38
- (gridFilter === null || gridFilter === void 0 ? void 0 : gridFilter.Expression) !== '' && (React.createElement(ButtonClear_1.ButtonClear, { onClick: () => clearQuery(), tooltip: "Clear Grid Filter", accessLevel: gridFilterAccessLevel })))) : (React.createElement(FieldWrap_1.default, null,
40
+ StringExtensions_1.default.IsNotNullOrEmpty(expression) && (React.createElement(ButtonClear_1.ButtonClear, { onClick: () => clearQuery(), tooltip: "Clear Grid Filter", accessLevel: gridFilterAccessLevel })))) : (React.createElement(FieldWrap_1.default, null,
39
41
  ' ',
40
42
  buttonExpand,
41
43
  React.createElement(Input_1.default, { disabled: isSuspended || gridFilterAccessLevel == 'ReadOnly', type: "text", "data-name": "grid-filter-input", placeholder: "Grid Filter", spellCheck: false, value: expression, onChange: (x) => setExpression(x.target.value), style: { width: '100%' } })));
@@ -115,7 +115,7 @@ const useGridFilterExpressionEditor = () => {
115
115
  availableColumns,
116
116
  runQuery,
117
117
  clearQuery,
118
- onExpand: () => adaptable.api.gridFilterApi.openExpressionEditorForGridFilter(expression),
118
+ onExpand: () => adaptable.api.gridFilterApi.openUIEditorForGridFilter(expression),
119
119
  saveQuery,
120
120
  suspendGridFilter,
121
121
  unSuspendGridFilter,
@@ -4,28 +4,10 @@ exports.useGridFilterOptionsForExpressionEditorProps = void 0;
4
4
  const AdaptableContext_1 = require("../AdaptableContext");
5
5
  const useGridFilterOptionsForExpressionEditorProps = () => {
6
6
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
7
- const gridfilterOptions = adaptable.api.optionsApi.getGridFilterOptions();
8
- switch (gridfilterOptions.availableFilterEditors) {
9
- case 'Both':
10
- return {
11
- showQueryBuilder: true,
12
- showExpressionEditor: true,
13
- };
14
- case 'QueryBuilder':
15
- return {
16
- showQueryBuilder: true,
17
- showExpressionEditor: false,
18
- };
19
- case 'ExpressionEditor':
20
- return {
21
- showQueryBuilder: false,
22
- showExpressionEditor: true,
23
- };
24
- default:
25
- return {
26
- showQueryBuilder: true,
27
- showExpressionEditor: true,
28
- };
29
- }
7
+ const gridFilterEditors = adaptable.api.optionsApi.getGridFilterOptions().availableFilterEditors;
8
+ return {
9
+ showQueryBuilder: gridFilterEditors.includes('QueryBuilder'),
10
+ showExpressionEditor: gridFilterEditors.includes('ExpressionEditor'),
11
+ };
30
12
  };
31
13
  exports.useGridFilterOptionsForExpressionEditorProps = useGridFilterOptionsForExpressionEditorProps;
@@ -34,11 +34,11 @@ const GridFilterSection = (props) => {
34
34
  const { data: layout } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
35
35
  const initialData = React.useMemo(() => api.internalApi.getQueryPreviewData(), []);
36
36
  const expressionEditorProps = (0, useGridFilterOptionsForExpressionEditor_1.useGridFilterOptionsForExpressionEditorProps)();
37
+ const expressionEditorContent = (React.createElement(ExpressionEditor_1.ExpressionEditor, Object.assign({}, expressionEditorProps, { allowSaveNamedQuery: false, type: 'boolean', module: ModuleConstants_1.GridFilterModuleId, value: (_b = (_a = layout === null || layout === void 0 ? void 0 : layout.GridFilter) === null || _a === void 0 ? void 0 : _a.Expression) !== null && _b !== void 0 ? _b : '', onChange: (expression) => {
38
+ props.onChange(Object.assign(Object.assign({}, layout), { GridFilter: Object.assign(Object.assign({}, layout.GridFilter), { Expression: expression }) }));
39
+ }, initialData: initialData, columns: api.columnApi.getQueryableColumns(), namedQueries: api.namedQueryApi.getNamedQueries(), api: api })));
37
40
  return (React.createElement(Tabs_1.Tabs, { style: { height: '100%' } },
38
41
  React.createElement(Tabs_1.Tabs.Tab, null, "Grid Filters"),
39
- React.createElement(Tabs_1.Tabs.Content, null,
40
- React.createElement(ExpressionEditor_1.ExpressionEditor, Object.assign({}, expressionEditorProps, { allowSaveNamedQuery: false, type: 'boolean', module: ModuleConstants_1.GridFilterModuleId, value: (_b = (_a = layout === null || layout === void 0 ? void 0 : layout.GridFilter) === null || _a === void 0 ? void 0 : _a.Expression) !== null && _b !== void 0 ? _b : '', onChange: (expression) => {
41
- props.onChange(Object.assign(Object.assign({}, layout), { GridFilter: Object.assign(Object.assign({}, layout.GridFilter), { Expression: expression }) }));
42
- }, initialData: initialData, columns: api.columnApi.getQueryableColumns(), namedQueries: api.namedQueryApi.getNamedQueries(), api: api })))));
42
+ React.createElement(Tabs_1.Tabs.Content, null, expressionEditorContent)));
43
43
  };
44
44
  exports.GridFilterSection = GridFilterSection;
@@ -9,7 +9,7 @@ const EditGridFilterButton = () => {
9
9
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
10
10
  const handleClick = React.useCallback((event) => {
11
11
  event.stopPropagation();
12
- adaptable.api.gridFilterApi.openExpressionEditorForGridFilter();
12
+ adaptable.api.gridFilterApi.openUIEditorForGridFilter();
13
13
  }, []);
14
14
  return React.createElement(SimpleButton_1.default, { variant: "text", iconSize: 15, onClick: handleClick, icon: "edit" });
15
15
  };
@@ -41,6 +41,9 @@ import { AdaptableLogger } from './AdaptableLogger';
41
41
  import { Fdc3Service } from '../Utilities/Services/Fdc3Service';
42
42
  type RuntimeConfig = {
43
43
  waitForAgGrid?: boolean;
44
+ /**
45
+ * @deprecated
46
+ */
44
47
  renderReactRoot?: RenderReactRootFn;
45
48
  variant?: AdaptableVariant;
46
49
  gridOptions: AgGridConfig['gridOptions'];
@@ -361,6 +364,7 @@ export declare class Adaptable implements IAdaptable {
361
364
  closeAllRowGroups(): void;
362
365
  expandRowGroupsForValues(columnValues: any[]): void;
363
366
  getAgGridColumnForColumnId(columnId: string): Column;
367
+ getAgGridAllGridColumns(): Column<any>[];
364
368
  setRowGroupColumns(columnIds: string[]): void;
365
369
  clearRowGroupColumns(): void;
366
370
  getExpandRowGroupsKeys(): any[];
@@ -361,24 +361,6 @@ class Adaptable {
361
361
  async init(adaptableOptions, runtimeConfig, _staticInit) {
362
362
  this.logger = new AdaptableLogger_1.AdaptableLogger(adaptableOptions.adaptableId || String(Date.now()));
363
363
  const perfAdaptableInit = this.logger.beginPerf(`Adaptable init()`);
364
- if (runtimeConfig.renderReactRoot) {
365
- this.renderReactRoot = (el, container) => {
366
- const unmount = runtimeConfig.renderReactRoot(el, container);
367
- return () => {
368
- // we used to capture here because of FloatingFilters/Filters - see FloatingFilterWrapper and FilterWrapper
369
- // as we didn't have a native React implementation for our React wrapper
370
- // but we might need to do this again in the future for some other components that are not native React
371
- // captureReactWarnings();
372
- if (typeof unmount === 'function') {
373
- // rAF is required, otherwise the unmount would be performed during the rendering phase and React doesn't like that
374
- requestAnimationFrame(() => {
375
- unmount();
376
- });
377
- }
378
- // releaseReactWarnings();
379
- };
380
- };
381
- }
382
364
  if (runtimeConfig.variant) {
383
365
  this.variant = runtimeConfig.variant;
384
366
  }
@@ -4179,6 +4161,9 @@ class Adaptable {
4179
4161
  getAgGridColumnForColumnId(columnId) {
4180
4162
  return this.gridOptions.columnApi.getColumn(columnId);
4181
4163
  }
4164
+ getAgGridAllGridColumns() {
4165
+ return this.gridOptions.columnApi.getAllGridColumns();
4166
+ }
4182
4167
  setRowGroupColumns(columnIds) {
4183
4168
  this.gridOptions.columnApi.setRowGroupColumns(columnIds);
4184
4169
  }
@@ -3558,6 +3558,11 @@ export declare const ADAPTABLE_METAMODEL: {
3558
3558
  isOpt: boolean;
3559
3559
  }[];
3560
3560
  };
3561
+ GridFilterEditor: {
3562
+ name: string;
3563
+ kind: string;
3564
+ desc: string;
3565
+ };
3561
3566
  GridFilterOptions: {
3562
3567
  name: string;
3563
3568
  kind: string;
@@ -3568,6 +3573,7 @@ export declare const ADAPTABLE_METAMODEL: {
3568
3573
  desc: string;
3569
3574
  isOpt: boolean;
3570
3575
  defVal: string;
3576
+ ref: string;
3571
3577
  gridInfo?: undefined;
3572
3578
  } | {
3573
3579
  name: string;
@@ -3576,6 +3582,7 @@ export declare const ADAPTABLE_METAMODEL: {
3576
3582
  isOpt: boolean;
3577
3583
  gridInfo: string;
3578
3584
  defVal: string;
3585
+ ref?: undefined;
3579
3586
  })[];
3580
3587
  };
3581
3588
  GridRow: {
@@ -4819,6 +4826,33 @@ export declare const ADAPTABLE_METAMODEL: {
4819
4826
  desc: string;
4820
4827
  }[];
4821
4828
  };
4829
+ ServerValidationResult: {
4830
+ name: string;
4831
+ kind: string;
4832
+ desc: string;
4833
+ props: ({
4834
+ name: string;
4835
+ kind: string;
4836
+ desc: string;
4837
+ isOpt: boolean;
4838
+ defVal: string;
4839
+ ref: string;
4840
+ } | {
4841
+ name: string;
4842
+ kind: string;
4843
+ desc: string;
4844
+ isOpt: boolean;
4845
+ defVal?: undefined;
4846
+ ref?: undefined;
4847
+ } | {
4848
+ name: string;
4849
+ kind: string;
4850
+ desc: string;
4851
+ isOpt: boolean;
4852
+ defVal: string;
4853
+ ref?: undefined;
4854
+ })[];
4855
+ };
4822
4856
  SetPrimaryKeyValueContext: {
4823
4857
  name: string;
4824
4858
  kind: string;
@@ -5463,33 +5497,6 @@ export declare const ADAPTABLE_METAMODEL: {
5463
5497
  isOpt?: undefined;
5464
5498
  })[];
5465
5499
  };
5466
- ValidationResult: {
5467
- name: string;
5468
- kind: string;
5469
- desc: string;
5470
- props: ({
5471
- name: string;
5472
- kind: string;
5473
- desc: string;
5474
- isOpt: boolean;
5475
- defVal: string;
5476
- ref: string;
5477
- } | {
5478
- name: string;
5479
- kind: string;
5480
- desc: string;
5481
- isOpt: boolean;
5482
- defVal?: undefined;
5483
- ref?: undefined;
5484
- } | {
5485
- name: string;
5486
- kind: string;
5487
- desc: string;
5488
- isOpt: boolean;
5489
- defVal: string;
5490
- ref?: undefined;
5491
- })[];
5492
- };
5493
5500
  ValuationContext: {
5494
5501
  name: string;
5495
5502
  kind: string;