@finos/legend-application-query 5.2.6 → 5.2.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.
Files changed (231) hide show
  1. package/lib/components/QueryBuilder.d.ts.map +1 -1
  2. package/lib/components/QueryBuilder.js +22 -11
  3. package/lib/components/QueryBuilder.js.map +1 -1
  4. package/lib/components/QueryBuilderResultPanel.d.ts.map +1 -1
  5. package/lib/components/QueryBuilderResultPanel.js +12 -7
  6. package/lib/components/QueryBuilderResultPanel.js.map +1 -1
  7. package/lib/components/QueryBuilderSetupPanel.js +1 -1
  8. package/lib/components/QueryBuilderSetupPanel.js.map +1 -1
  9. package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts +1 -2
  10. package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts.map +1 -1
  11. package/lib/components/explorer/QueryBuilderExplorerPanel.js +14 -16
  12. package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
  13. package/lib/components/explorer/QueryBuilderPropertySearchPanel.js +2 -2
  14. package/lib/components/explorer/QueryBuilderPropertySearchPanel.js.map +1 -1
  15. package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.d.ts.map +1 -1
  16. package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.js +22 -105
  17. package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.js.map +1 -1
  18. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts +1 -2
  19. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts.map +1 -1
  20. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js +8 -10
  21. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js.map +1 -1
  22. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
  23. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +23 -17
  24. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
  25. package/lib/components/fetch-structure/QueryBuilderProjectionPanel.d.ts +2 -2
  26. package/lib/components/fetch-structure/QueryBuilderProjectionPanel.d.ts.map +1 -1
  27. package/lib/components/fetch-structure/QueryBuilderProjectionPanel.js +15 -12
  28. package/lib/components/fetch-structure/QueryBuilderProjectionPanel.js.map +1 -1
  29. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts +2 -2
  30. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts.map +1 -1
  31. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +23 -28
  32. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
  33. package/lib/components/filter/QueryBuilderFilterPanel.js +7 -7
  34. package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
  35. package/lib/components/shared/QueryBuilderPanelIssueCountBadge.d.ts.map +1 -1
  36. package/lib/components/shared/QueryBuilderPanelIssueCountBadge.js +1 -1
  37. package/lib/components/shared/QueryBuilderPanelIssueCountBadge.js.map +1 -1
  38. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts.map +1 -1
  39. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +5 -3
  40. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
  41. package/lib/index.css +2 -2
  42. package/lib/index.css.map +1 -1
  43. package/lib/package.json +7 -7
  44. package/lib/stores/QueryBuilderPreviewDataHelper.d.ts.map +1 -1
  45. package/lib/stores/QueryBuilderPreviewDataHelper.js +17 -14
  46. package/lib/stores/QueryBuilderPreviewDataHelper.js.map +1 -1
  47. package/lib/stores/QueryBuilderPropertyEditorState.d.ts.map +1 -1
  48. package/lib/stores/QueryBuilderPropertyEditorState.js +34 -24
  49. package/lib/stores/QueryBuilderPropertyEditorState.js.map +1 -1
  50. package/lib/stores/QueryBuilderState.d.ts +1 -2
  51. package/lib/stores/QueryBuilderState.d.ts.map +1 -1
  52. package/lib/stores/QueryBuilderState.js +17 -26
  53. package/lib/stores/QueryBuilderState.js.map +1 -1
  54. package/lib/stores/QueryBuilderStateBuilder.d.ts +124 -0
  55. package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -0
  56. package/lib/stores/QueryBuilderStateBuilder.js +310 -0
  57. package/lib/stores/QueryBuilderStateBuilder.js.map +1 -0
  58. package/lib/stores/{QueryBuilderTestUtils.d.ts → QueryBuilderStateTestUtils.d.ts} +2 -2
  59. package/lib/stores/QueryBuilderStateTestUtils.d.ts.map +1 -0
  60. package/lib/stores/{QueryBuilderTestUtils.js → QueryBuilderStateTestUtils.js} +2 -2
  61. package/lib/stores/QueryBuilderStateTestUtils.js.map +1 -0
  62. package/lib/stores/QueryBuilderTypeaheadHelper.d.ts.map +1 -1
  63. package/lib/stores/QueryBuilderTypeaheadHelper.js +14 -12
  64. package/lib/stores/QueryBuilderTypeaheadHelper.js.map +1 -1
  65. package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts +3 -11
  66. package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts.map +1 -1
  67. package/lib/stores/QueryBuilderValueSpecificationBuilder.js +10 -319
  68. package/lib/stores/QueryBuilderValueSpecificationBuilder.js.map +1 -1
  69. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.d.ts +27 -0
  70. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.d.ts.map +1 -0
  71. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js +153 -0
  72. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js.map +1 -0
  73. package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts +37 -1
  74. package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts.map +1 -1
  75. package/lib/stores/QueryBuilderValueSpecificationHelper.js +79 -2
  76. package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
  77. package/lib/stores/explorer/QueryBuilderExplorerState.d.ts +12 -11
  78. package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
  79. package/lib/stores/explorer/QueryBuilderExplorerState.js +53 -20
  80. package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
  81. package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.d.ts +1 -1
  82. package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.d.ts.map +1 -1
  83. package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.js +3 -1
  84. package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.js.map +1 -1
  85. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts +17 -0
  86. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts.map +1 -1
  87. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js +10 -0
  88. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js.map +1 -1
  89. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.d.ts +3 -20
  90. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.d.ts.map +1 -1
  91. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js +31 -73
  92. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js.map +1 -1
  93. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts +17 -4
  94. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
  95. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js +110 -21
  96. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js.map +1 -1
  97. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.d.ts +20 -0
  98. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.d.ts.map +1 -0
  99. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js +62 -0
  100. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js.map +1 -0
  101. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.d.ts +2 -1
  102. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.d.ts.map +1 -1
  103. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js +3 -8
  104. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js.map +1 -1
  105. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.d.ts +9 -2
  106. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.d.ts.map +1 -1
  107. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.js +28 -5
  108. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.js.map +1 -1
  109. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.js +2 -2
  110. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.js.map +1 -1
  111. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.d.ts +10 -2
  112. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.d.ts.map +1 -1
  113. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.js +102 -39
  114. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.js.map +1 -1
  115. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.d.ts +25 -0
  116. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.d.ts.map +1 -0
  117. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.js +186 -0
  118. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.js.map +1 -0
  119. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts +9 -4
  120. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
  121. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.js +129 -13
  122. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
  123. package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.d.ts +20 -0
  124. package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.d.ts.map +1 -0
  125. package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.js +96 -0
  126. package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.js.map +1 -0
  127. package/lib/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.js +1 -1
  128. package/lib/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.js.map +1 -1
  129. package/lib/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.d.ts → QueryBuilderPostFilterStateBuilder.d.ts} +4 -3
  130. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterStateBuilder.d.ts.map +1 -0
  131. package/lib/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.js → QueryBuilderPostFilterStateBuilder.js} +30 -21
  132. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterStateBuilder.js.map +1 -0
  133. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.d.ts.map +1 -1
  134. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js +1 -4
  135. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js.map +1 -1
  136. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js +1 -1
  137. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js.map +1 -1
  138. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js +1 -1
  139. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js.map +1 -1
  140. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js +1 -1
  141. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js.map +1 -1
  142. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js +1 -1
  143. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js.map +1 -1
  144. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.js +1 -1
  145. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.js.map +1 -1
  146. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.js +1 -1
  147. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.js.map +1 -1
  148. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.js +1 -1
  149. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.js.map +1 -1
  150. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js +1 -1
  151. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js.map +1 -1
  152. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.js +1 -1
  153. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.js.map +1 -1
  154. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js +1 -1
  155. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js.map +1 -1
  156. package/lib/stores/filter/QueryBuilderFilterStateBuilder.d.ts +19 -0
  157. package/lib/stores/filter/QueryBuilderFilterStateBuilder.d.ts.map +1 -0
  158. package/lib/stores/filter/QueryBuilderFilterStateBuilder.js +74 -0
  159. package/lib/stores/filter/QueryBuilderFilterStateBuilder.js.map +1 -0
  160. package/lib/stores/filter/{QueryBuilderValueSpecificationBuilder.d.ts → QueryBuilderFilterValueSpecificationBuilder.d.ts} +1 -1
  161. package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.d.ts.map +1 -0
  162. package/lib/stores/filter/{QueryBuilderValueSpecificationBuilder.js → QueryBuilderFilterValueSpecificationBuilder.js} +1 -1
  163. package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js.map +1 -0
  164. package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.d.ts.map +1 -1
  165. package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.js +5 -5
  166. package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.js.map +1 -1
  167. package/package.json +14 -14
  168. package/src/components/QueryBuilder.tsx +47 -28
  169. package/src/components/QueryBuilderResultPanel.tsx +21 -14
  170. package/src/components/QueryBuilderSetupPanel.tsx +1 -1
  171. package/src/components/explorer/QueryBuilderExplorerPanel.tsx +23 -38
  172. package/src/components/explorer/QueryBuilderPropertySearchPanel.tsx +2 -2
  173. package/src/components/fetch-structure/QueryBuilderFetchStructurePanel.tsx +41 -175
  174. package/src/components/fetch-structure/QueryBuilderGraphFetchTreePanel.tsx +9 -12
  175. package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +62 -28
  176. package/src/components/fetch-structure/QueryBuilderProjectionPanel.tsx +74 -48
  177. package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +33 -41
  178. package/src/components/filter/QueryBuilderFilterPanel.tsx +7 -7
  179. package/src/components/shared/QueryBuilderPanelIssueCountBadge.tsx +3 -1
  180. package/src/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +5 -8
  181. package/src/stores/QueryBuilderPreviewDataHelper.ts +27 -18
  182. package/src/stores/QueryBuilderPropertyEditorState.ts +40 -31
  183. package/src/stores/QueryBuilderState.ts +26 -32
  184. package/src/stores/QueryBuilderStateBuilder.ts +584 -0
  185. package/src/stores/{QueryBuilderTestUtils.ts → QueryBuilderStateTestUtils.ts} +1 -1
  186. package/src/stores/QueryBuilderTypeaheadHelper.ts +23 -16
  187. package/src/stores/QueryBuilderValueSpecificationBuilder.ts +24 -584
  188. package/src/stores/QueryBuilderValueSpecificationBuilderHelper.ts +248 -0
  189. package/src/stores/QueryBuilderValueSpecificationHelper.ts +114 -0
  190. package/src/stores/explorer/QueryBuilderExplorerState.ts +73 -33
  191. package/src/stores/explorer/QueryBuilderPropertySearchPanelState.ts +3 -1
  192. package/src/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.ts +33 -2
  193. package/src/stores/fetch-structure/QueryBuilderFetchStructureState.ts +53 -118
  194. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.ts +166 -26
  195. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.ts +131 -0
  196. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.ts +10 -19
  197. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.ts +68 -4
  198. package/src/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.ts +2 -2
  199. package/src/stores/fetch-structure/projection/QueryBuilderProjectionState.ts +172 -67
  200. package/src/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.ts +426 -0
  201. package/src/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +266 -21
  202. package/src/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.ts +228 -0
  203. package/src/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.ts +1 -1
  204. package/src/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.ts → QueryBuilderPostFilterStateBuilder.ts} +68 -48
  205. package/src/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.ts +1 -11
  206. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.ts +1 -1
  207. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.ts +1 -1
  208. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.ts +1 -1
  209. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.ts +1 -1
  210. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.ts +1 -1
  211. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.ts +1 -1
  212. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.ts +1 -1
  213. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.ts +1 -1
  214. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.ts +1 -1
  215. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.ts +1 -1
  216. package/src/stores/filter/QueryBuilderFilterStateBuilder.ts +155 -0
  217. package/src/stores/filter/{QueryBuilderValueSpecificationBuilder.ts → QueryBuilderFilterValueSpecificationBuilder.ts} +0 -0
  218. package/src/stores/filter/operators/QueryBuilderFilterOperatorHelper.ts +5 -5
  219. package/tsconfig.json +10 -5
  220. package/tsconfig.package.json +1 -1
  221. package/lib/stores/QueryBuilderTestUtils.d.ts.map +0 -1
  222. package/lib/stores/QueryBuilderTestUtils.js.map +0 -1
  223. package/lib/stores/QueryBuilderValueSpecificationProcessor.d.ts +0 -56
  224. package/lib/stores/QueryBuilderValueSpecificationProcessor.d.ts.map +0 -1
  225. package/lib/stores/QueryBuilderValueSpecificationProcessor.js +0 -548
  226. package/lib/stores/QueryBuilderValueSpecificationProcessor.js.map +0 -1
  227. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationProcessor.d.ts.map +0 -1
  228. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationProcessor.js.map +0 -1
  229. package/lib/stores/filter/QueryBuilderValueSpecificationBuilder.d.ts.map +0 -1
  230. package/lib/stores/filter/QueryBuilderValueSpecificationBuilder.js.map +0 -1
  231. package/src/stores/QueryBuilderValueSpecificationProcessor.ts +0 -1254
@@ -14,157 +14,31 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
+ import { guaranteeNonNullable } from '@finos/legend-shared';
17
18
  import {
18
- getNullableFirstElement,
19
- guaranteeNonNullable,
20
- guaranteeType,
21
- UnsupportedOperationError,
22
- } from '@finos/legend-shared';
23
- import {
24
- type ValueSpecification,
25
- Class,
26
- Multiplicity,
19
+ type Class,
20
+ type Multiplicity,
27
21
  getMilestoneTemporalStereotype,
28
- INTERNAL__UnknownValueSpecification,
29
- V1_GraphTransformerContextBuilder,
30
- V1_serializeRawValueSpecification,
31
- V1_transformRawLambda,
32
22
  extractElementNameFromPath,
33
23
  InstanceValue,
34
24
  PackageableElementExplicitReference,
35
- CollectionInstanceValue,
36
25
  CORE_PURE_PATH,
37
26
  FunctionType,
38
27
  GenericType,
39
28
  GenericTypeExplicitReference,
40
29
  LambdaFunction,
41
- PrimitiveInstanceValue,
42
- PRIMITIVE_TYPE,
43
- RootGraphFetchTreeInstanceValue,
44
30
  SimpleFunctionExpression,
45
31
  TYPICAL_MULTIPLICITY_TYPE,
46
32
  MILESTONING_STEREOTYPE,
47
- AbstractPropertyExpression,
48
- DerivedProperty,
49
- INTERNAL__PropagatedValue,
50
- matchFunctionName,
51
33
  } from '@finos/legend-graph';
52
- import { isGraphFetchTreeDataEmpty } from './fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js';
53
34
  import type { QueryBuilderState } from './QueryBuilderState.js';
54
- import {
55
- QueryBuilderDerivationProjectionColumnState,
56
- QueryBuilderSimpleProjectionColumnState,
57
- } from './fetch-structure/projection/QueryBuilderProjectionColumnState.js';
58
- import { buildGenericLambdaFunctionInstanceValue } from './QueryBuilderValueSpecificationHelper.js';
59
- import { getDerivedPropertyMilestoningSteoreotype } from './QueryBuilderPropertyEditorState.js';
60
- import {
61
- functionExpression_setParametersValues,
62
- propertyExpression_setParametersValue,
63
- buildParametersLetLambdaFunc,
64
- } from '@finos/legend-application';
35
+ import { buildParametersLetLambdaFunc } from '@finos/legend-application';
65
36
  import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../QueryBuilder_Const.js';
66
- import { FETCH_STRUCTURE_MODE } from './fetch-structure/QueryBuilderFetchStructureState.js';
67
- import { appendPostFilter } from './fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js';
68
- import { appendResultSetModifiers } from './fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.js';
69
- import { buildFilterExpression } from './filter/QueryBuilderValueSpecificationBuilder.js';
70
-
71
- /**
72
- * Checks if the provided property expression match the criteria for default
73
- * date propagation so we know whether we need to fill in values for the parameter
74
- * or just propgate values from the parent's expression
75
- *
76
- * NOTE: this takes date propgation into account. See the table below for all
77
- * the combination:
78
- *
79
- * | [source] | | | | |
80
- * ----------------------------------------------------------------------
81
- * [target] | | NONE | PR_TMP | BI_TMP | BU_TMP |
82
- * ----------------------------------------------------------------------
83
- * | NONE | N.A. | PRD | PRD,BUD | BUD |
84
- * ----------------------------------------------------------------------
85
- * | PR_TMP | N.A. | X | PRD,BUD | BUD |
86
- * ----------------------------------------------------------------------
87
- * | BI_TMP | N.A. | X | X | X |
88
- * ----------------------------------------------------------------------
89
- * | BU_TMP | N.A. | PRD | PRD,BUD | X |
90
- * ----------------------------------------------------------------------
91
- *
92
- * Annotations:
93
- *
94
- * [source]: source temporal type
95
- * [target]: target temporal type
96
- *
97
- * PR_TMP : processing temporal
98
- * BI_TMP : bitemporal
99
- * BU_TMP : business temporal
100
- *
101
- * X : no default date propagated
102
- * PRD : default processing date is propagated
103
- * BUD : default business date is propgated
104
- */
105
- const isDefaultDatePropagationSupported = (
106
- currentPropertyExpression: AbstractPropertyExpression,
107
- queryBuilderState: QueryBuilderState,
108
- prevPropertyExpression?: AbstractPropertyExpression | undefined,
109
- ): boolean => {
110
- const property = currentPropertyExpression.func;
111
- const graph = queryBuilderState.graphManagerState.graph;
112
- // Default date propagation is not supported for current expression when the previous property expression is a derived property.
113
- if (
114
- prevPropertyExpression &&
115
- prevPropertyExpression.func instanceof DerivedProperty &&
116
- prevPropertyExpression.func._OWNER.derivedProperties.includes(
117
- prevPropertyExpression.func,
118
- )
119
- ) {
120
- return false;
121
- }
122
- // Default date propagation is not supported for current expression when the milestonedParameterValues of
123
- // the previous property expression doesn't match with the global milestonedParameterValues
124
- if (
125
- prevPropertyExpression &&
126
- prevPropertyExpression.func.genericType.value.rawType instanceof Class
127
- ) {
128
- const milestoningStereotype = getMilestoneTemporalStereotype(
129
- prevPropertyExpression.func.genericType.value.rawType,
130
- graph,
131
- );
132
- if (
133
- milestoningStereotype &&
134
- !prevPropertyExpression.parametersValues
135
- .slice(1)
136
- .every(
137
- (parameterValue) =>
138
- parameterValue instanceof INTERNAL__PropagatedValue,
139
- )
140
- ) {
141
- return false;
142
- }
143
- }
144
- if (property.genericType.value.rawType instanceof Class) {
145
- // the stereotype of source class of current property expression.
146
- const sourceStereotype =
147
- property instanceof DerivedProperty
148
- ? getDerivedPropertyMilestoningSteoreotype(property, graph)
149
- : undefined;
150
- // Default date propagation is always supported if the source is `bitemporal`
151
- if (sourceStereotype === MILESTONING_STEREOTYPE.BITEMPORAL) {
152
- return true;
153
- }
154
- // the stereotype (if exists) of the generic type of current property expression.
155
- const targetStereotype = getMilestoneTemporalStereotype(
156
- property.genericType.value.rawType,
157
- graph,
158
- );
159
- // Default date propagation is supported when stereotype of both source and target matches
160
- if (sourceStereotype && targetStereotype) {
161
- return sourceStereotype === targetStereotype;
162
- }
163
- }
164
- return false;
165
- };
37
+ import { buildFilterExpression } from './filter/QueryBuilderFilterValueSpecificationBuilder.js';
38
+ import type { LambdaFunctionBuilderOption } from './QueryBuilderValueSpecificationBuilderHelper.js';
39
+ import type { QueryBuilderFetchStructureState } from './fetch-structure/QueryBuilderFetchStructureState.js';
166
40
 
167
- export const buildGetAllFunction = (
41
+ const buildGetAllFunction = (
168
42
  _class: Class,
169
43
  multiplicity: Multiplicity,
170
44
  ): SimpleFunctionExpression => {
@@ -181,119 +55,20 @@ export const buildGetAllFunction = (
181
55
  return _func;
182
56
  };
183
57
 
184
- export const buildPropertyExpressionChain = (
185
- propertyExpression: AbstractPropertyExpression,
186
- queryBuilderState: QueryBuilderState,
187
- ): ValueSpecification => {
188
- const graph = queryBuilderState.graphManagerState.graph;
189
- const newPropertyExpression = new AbstractPropertyExpression(
190
- '',
191
- graph.getTypicalMultiplicity(TYPICAL_MULTIPLICITY_TYPE.ONE),
58
+ const buildFetchStructure = (
59
+ fetchStructureState: QueryBuilderFetchStructureState,
60
+ lambdaFunction: LambdaFunction,
61
+ options?: LambdaFunctionBuilderOption,
62
+ ): void => {
63
+ fetchStructureState.implementation.appendFetchStructure(
64
+ lambdaFunction,
65
+ options,
192
66
  );
193
- newPropertyExpression.func = propertyExpression.func;
194
- newPropertyExpression.parametersValues = propertyExpression.parametersValues;
195
-
196
- let nextExpression: ValueSpecification | undefined;
197
- let currentExpression: ValueSpecification | undefined = newPropertyExpression;
198
- while (currentExpression instanceof AbstractPropertyExpression) {
199
- nextExpression = getNullableFirstElement(
200
- currentExpression.parametersValues,
201
- );
202
- if (nextExpression instanceof AbstractPropertyExpression) {
203
- const parameterValue = new AbstractPropertyExpression(
204
- '',
205
- graph.getTypicalMultiplicity(TYPICAL_MULTIPLICITY_TYPE.ONE),
206
- );
207
- parameterValue.func = nextExpression.func;
208
- parameterValue.parametersValues = nextExpression.parametersValues;
209
- nextExpression = parameterValue;
210
- currentExpression.parametersValues[0] = parameterValue;
211
- }
212
- if (currentExpression.func instanceof DerivedProperty) {
213
- const parameterValues = currentExpression.parametersValues.slice(1);
214
- parameterValues.forEach((parameterValue, index) => {
215
- if (parameterValue instanceof INTERNAL__PropagatedValue) {
216
- // Replace with argumentless derived property expression only when default date propagation is supported
217
- if (
218
- isDefaultDatePropagationSupported(
219
- guaranteeType(currentExpression, AbstractPropertyExpression),
220
- queryBuilderState,
221
- nextExpression instanceof AbstractPropertyExpression
222
- ? nextExpression
223
- : undefined,
224
- )
225
- ) {
226
- // NOTE: For `bitemporal` property check if the property expression has parameters which are not instance of
227
- // `INTERNAL_PropagatedValue` then pass the parameters as user explicitly changed values of either of the parameters.
228
- if (
229
- (index === 1 &&
230
- guaranteeType(currentExpression, AbstractPropertyExpression)
231
- .parametersValues.length === 3) ||
232
- (index === 0 &&
233
- guaranteeType(currentExpression, AbstractPropertyExpression)
234
- .parametersValues.length === 3 &&
235
- !(
236
- guaranteeType(currentExpression, AbstractPropertyExpression)
237
- .parametersValues[2] instanceof INTERNAL__PropagatedValue
238
- ))
239
- ) {
240
- propertyExpression_setParametersValue(
241
- guaranteeType(currentExpression, AbstractPropertyExpression),
242
- index + 1,
243
- parameterValue.getValue(),
244
- queryBuilderState.observableContext,
245
- );
246
- } else {
247
- functionExpression_setParametersValues(
248
- guaranteeType(currentExpression, AbstractPropertyExpression),
249
- [
250
- guaranteeNonNullable(
251
- guaranteeType(currentExpression, AbstractPropertyExpression)
252
- .parametersValues[0],
253
- ),
254
- ],
255
- queryBuilderState.observableContext,
256
- );
257
- }
258
- } else {
259
- propertyExpression_setParametersValue(
260
- guaranteeType(currentExpression, AbstractPropertyExpression),
261
- index + 1,
262
- parameterValue.getValue(),
263
- queryBuilderState.observableContext,
264
- );
265
- }
266
- }
267
- });
268
- }
269
- currentExpression = nextExpression;
270
- // Take care of chains of subtype (a pattern that is not useful, but we want to support and rectify)
271
- // $x.employees->subType(@Person)->subType(@Staff)
272
- while (
273
- currentExpression instanceof SimpleFunctionExpression &&
274
- matchFunctionName(
275
- currentExpression.functionName,
276
- QUERY_BUILDER_SUPPORTED_FUNCTIONS.SUBTYPE,
277
- )
278
- ) {
279
- currentExpression = getNullableFirstElement(
280
- currentExpression.parametersValues,
281
- );
282
- }
283
- }
284
- return newPropertyExpression;
285
67
  };
286
68
 
287
69
  export const buildLambdaFunction = (
288
70
  queryBuilderState: QueryBuilderState,
289
- options?: {
290
- /**
291
- * Set queryBuilderState to `true` when we construct query for execution within the app.
292
- * queryBuilderState will make the lambda function building process overrides several query values, such as the row limit.
293
- */
294
- isBuildingExecutionQuery?: boolean | undefined;
295
- keepSourceInformation?: boolean | undefined;
296
- },
71
+ options?: LambdaFunctionBuilderOption,
297
72
  ): LambdaFunction => {
298
73
  const _class = guaranteeNonNullable(
299
74
  queryBuilderState.querySetupState._class,
@@ -303,9 +78,6 @@ export const buildLambdaFunction = (
303
78
  queryBuilderState.graphManagerState.graph.getTypicalMultiplicity(
304
79
  TYPICAL_MULTIPLICITY_TYPE.ONE,
305
80
  );
306
- const typeString = queryBuilderState.graphManagerState.graph.getPrimitiveType(
307
- PRIMITIVE_TYPE.STRING,
308
- );
309
81
  const typeAny = queryBuilderState.graphManagerState.graph.getType(
310
82
  CORE_PURE_PATH.ANY,
311
83
  );
@@ -361,7 +133,7 @@ export const buildLambdaFunction = (
361
133
  }
362
134
  lambdaFunction.expressionSequence[0] = getAllFunction;
363
135
 
364
- // build filter()
136
+ // build filter
365
137
  const filterFunction = buildFilterExpression(
366
138
  queryBuilderState.filterState,
367
139
  getAllFunction,
@@ -369,345 +141,13 @@ export const buildLambdaFunction = (
369
141
  if (filterFunction) {
370
142
  lambdaFunction.expressionSequence[0] = filterFunction;
371
143
  }
372
- // build fetch structure
373
- switch (queryBuilderState.fetchStructureState.fetchStructureMode) {
374
- case FETCH_STRUCTURE_MODE.PROJECTION: {
375
- if (
376
- queryBuilderState.fetchStructureState.projectionState.aggregationState
377
- .columns.length
378
- ) {
379
- // aggregation
380
-
381
- const groupByFunction = new SimpleFunctionExpression(
382
- extractElementNameFromPath(
383
- QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY,
384
- ),
385
- multiplicityOne,
386
- );
387
-
388
- const colLambdas = new CollectionInstanceValue(
389
- new Multiplicity(
390
- queryBuilderState.fetchStructureState.projectionState.columns
391
- .length -
392
- queryBuilderState.fetchStructureState.projectionState
393
- .aggregationState.columns.length,
394
- queryBuilderState.fetchStructureState.projectionState.columns
395
- .length -
396
- queryBuilderState.fetchStructureState.projectionState
397
- .aggregationState.columns.length,
398
- ),
399
- );
400
- const aggregateLambdas = new CollectionInstanceValue(
401
- new Multiplicity(
402
- queryBuilderState.fetchStructureState.projectionState.aggregationState.columns.length,
403
- queryBuilderState.fetchStructureState.projectionState.aggregationState.columns.length,
404
- ),
405
- );
406
- const colAliases = new CollectionInstanceValue(
407
- new Multiplicity(
408
- queryBuilderState.fetchStructureState.projectionState.columns.length,
409
- queryBuilderState.fetchStructureState.projectionState.columns.length,
410
- ),
411
- );
412
- queryBuilderState.fetchStructureState.projectionState.columns.forEach(
413
- (projectionColumnState) => {
414
- // column alias
415
- const colAlias = new PrimitiveInstanceValue(
416
- GenericTypeExplicitReference.create(new GenericType(typeString)),
417
- multiplicityOne,
418
- );
419
- colAlias.values.push(projectionColumnState.columnName);
420
- colAliases.values.push(colAlias);
421
-
422
- const aggregateColumnState =
423
- queryBuilderState.fetchStructureState.projectionState.aggregationState.columns.find(
424
- (column) =>
425
- column.projectionColumnState === projectionColumnState,
426
- );
427
-
428
- // column projection
429
- let columnLambda: ValueSpecification;
430
- if (
431
- projectionColumnState instanceof
432
- QueryBuilderSimpleProjectionColumnState
433
- ) {
434
- columnLambda = buildGenericLambdaFunctionInstanceValue(
435
- projectionColumnState.lambdaParameterName,
436
- [
437
- buildPropertyExpressionChain(
438
- projectionColumnState.propertyExpressionState
439
- .propertyExpression,
440
- projectionColumnState.propertyExpressionState
441
- .queryBuilderState,
442
- ),
443
- ],
444
- queryBuilderState.graphManagerState.graph,
445
- );
446
- } else if (
447
- projectionColumnState instanceof
448
- QueryBuilderDerivationProjectionColumnState
449
- ) {
450
- columnLambda = new INTERNAL__UnknownValueSpecification(
451
- V1_serializeRawValueSpecification(
452
- V1_transformRawLambda(
453
- projectionColumnState.lambda,
454
- new V1_GraphTransformerContextBuilder(
455
- // TODO?: do we need to include the plugins here?
456
- [],
457
- )
458
- .withKeepSourceInformationFlag(
459
- Boolean(options?.keepSourceInformation),
460
- )
461
- .build(),
462
- ),
463
- ),
464
- );
465
- } else {
466
- throw new UnsupportedOperationError(
467
- `Can't build project() column expression: unsupported projection column state`,
468
- projectionColumnState,
469
- );
470
- }
471
-
472
- // column aggregation
473
- if (aggregateColumnState) {
474
- const aggregateFunctionExpression = new SimpleFunctionExpression(
475
- extractElementNameFromPath(
476
- QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_AGG,
477
- ),
478
- multiplicityOne,
479
- );
480
- const aggregateLambda = buildGenericLambdaFunctionInstanceValue(
481
- aggregateColumnState.lambdaParameterName,
482
- [
483
- aggregateColumnState.operator.buildAggregateExpressionFromState(
484
- aggregateColumnState,
485
- ),
486
- ],
487
- aggregateColumnState.aggregationState.projectionState
488
- .queryBuilderState.graphManagerState.graph,
489
- );
490
- aggregateFunctionExpression.parametersValues = [
491
- columnLambda,
492
- aggregateLambda,
493
- ];
494
-
495
- aggregateLambdas.values.push(aggregateFunctionExpression);
496
- } else {
497
- colLambdas.values.push(columnLambda);
498
- }
499
- },
500
- );
501
- const expression = lambdaFunction.expressionSequence[0];
502
- groupByFunction.parametersValues = [
503
- expression,
504
- colLambdas,
505
- aggregateLambdas,
506
- colAliases,
507
- ];
508
- lambdaFunction.expressionSequence[0] = groupByFunction;
509
- } else if (
510
- queryBuilderState.fetchStructureState.projectionState.columns.length
511
- ) {
512
- // projection
513
- const projectFunction = new SimpleFunctionExpression(
514
- extractElementNameFromPath(
515
- QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_PROJECT,
516
- ),
517
- multiplicityOne,
518
- );
519
- const colLambdas = new CollectionInstanceValue(
520
- new Multiplicity(
521
- queryBuilderState.fetchStructureState.projectionState.columns.length,
522
- queryBuilderState.fetchStructureState.projectionState.columns.length,
523
- ),
524
- );
525
- const colAliases = new CollectionInstanceValue(
526
- new Multiplicity(
527
- queryBuilderState.fetchStructureState.projectionState.columns.length,
528
- queryBuilderState.fetchStructureState.projectionState.columns.length,
529
- ),
530
- );
531
- queryBuilderState.fetchStructureState.projectionState.columns.forEach(
532
- (projectionColumnState) => {
533
- // column alias
534
- const colAlias = new PrimitiveInstanceValue(
535
- GenericTypeExplicitReference.create(new GenericType(typeString)),
536
- multiplicityOne,
537
- );
538
- colAlias.values.push(projectionColumnState.columnName);
539
- colAliases.values.push(colAlias);
540
144
 
541
- // column projection
542
- let columnLambda: ValueSpecification;
543
- if (
544
- projectionColumnState instanceof
545
- QueryBuilderSimpleProjectionColumnState
546
- ) {
547
- columnLambda = buildGenericLambdaFunctionInstanceValue(
548
- projectionColumnState.lambdaParameterName,
549
- [
550
- buildPropertyExpressionChain(
551
- projectionColumnState.propertyExpressionState
552
- .propertyExpression,
553
- projectionColumnState.propertyExpressionState
554
- .queryBuilderState,
555
- ),
556
- ],
557
- queryBuilderState.graphManagerState.graph,
558
- );
559
- } else if (
560
- projectionColumnState instanceof
561
- QueryBuilderDerivationProjectionColumnState
562
- ) {
563
- columnLambda = new INTERNAL__UnknownValueSpecification(
564
- V1_serializeRawValueSpecification(
565
- V1_transformRawLambda(
566
- projectionColumnState.lambda,
567
- new V1_GraphTransformerContextBuilder(
568
- // TODO?: do we need to include the plugins here?
569
- [],
570
- )
571
- .withKeepSourceInformationFlag(
572
- Boolean(options?.keepSourceInformation),
573
- )
574
- .build(),
575
- ),
576
- ),
577
- );
578
- } else {
579
- throw new UnsupportedOperationError(
580
- `Can't build project() column expression: unsupported projection column state`,
581
- projectionColumnState,
582
- );
583
- }
584
- colLambdas.values.push(columnLambda);
585
- },
586
- );
587
- const expression = lambdaFunction.expressionSequence[0];
588
- projectFunction.parametersValues = [expression, colLambdas, colAliases];
589
- lambdaFunction.expressionSequence[0] = projectFunction;
590
- }
591
-
592
- // build post-filter
593
- appendPostFilter(
594
- queryBuilderState.fetchStructureState.projectionState.postFilterState,
595
- lambdaFunction,
596
- );
597
-
598
- // build result set modifiers
599
- appendResultSetModifiers(
600
- queryBuilderState.fetchStructureState.projectionState
601
- .resultSetModifierState,
602
- lambdaFunction,
603
- {
604
- overridingLimit: options?.isBuildingExecutionQuery
605
- ? queryBuilderState.resultState.previewLimit
606
- : undefined,
607
- },
608
- );
609
-
610
- break;
611
- }
612
- case FETCH_STRUCTURE_MODE.GRAPH_FETCH: {
613
- // build fetch-structure
614
- if (
615
- queryBuilderState.fetchStructureState.graphFetchTreeState.treeData &&
616
- !isGraphFetchTreeDataEmpty(
617
- queryBuilderState.fetchStructureState.graphFetchTreeState.treeData,
618
- )
619
- ) {
620
- const graphFetchInstance = new RootGraphFetchTreeInstanceValue(
621
- multiplicityOne,
622
- );
623
- graphFetchInstance.values = [
624
- queryBuilderState.fetchStructureState.graphFetchTreeState.treeData
625
- .tree,
626
- ];
627
- const serializeFunction = new SimpleFunctionExpression(
628
- extractElementNameFromPath(
629
- QUERY_BUILDER_SUPPORTED_FUNCTIONS.SERIALIZE,
630
- ),
631
- multiplicityOne,
632
- );
633
- const graphFetchFunc = new SimpleFunctionExpression(
634
- queryBuilderState.fetchStructureState.graphFetchTreeState.isChecked
635
- ? extractElementNameFromPath(
636
- QUERY_BUILDER_SUPPORTED_FUNCTIONS.GRAPH_FETCH_CHECKED,
637
- )
638
- : extractElementNameFromPath(
639
- QUERY_BUILDER_SUPPORTED_FUNCTIONS.GRAPH_FETCH,
640
- ),
641
- multiplicityOne,
642
- );
643
- const expression = lambdaFunction.expressionSequence[0];
644
- graphFetchFunc.parametersValues = [expression, graphFetchInstance];
645
- serializeFunction.parametersValues = [
646
- graphFetchFunc,
647
- graphFetchInstance,
648
- ];
649
- lambdaFunction.expressionSequence[0] = serializeFunction;
650
- }
651
-
652
- // build result set modifier: i.e. preview limit
653
- if (options?.isBuildingExecutionQuery) {
654
- if (lambdaFunction.expressionSequence.length === 1) {
655
- const func = lambdaFunction.expressionSequence[0];
656
- if (func instanceof SimpleFunctionExpression) {
657
- if (
658
- matchFunctionName(
659
- func.functionName,
660
- QUERY_BUILDER_SUPPORTED_FUNCTIONS.SERIALIZE,
661
- )
662
- ) {
663
- // NOTE: we have to separate the handling of `take()` for projection and
664
- // graph-fetch as the latter use `meta::pure::functions::collection::take()`
665
- // where the former uses `meta::pure::tds::take()`, therefore the placement
666
- // in the query are different. Also, note that because of the above distinction,
667
- // we won't support using `take()` as result set modifier operations for graph-fetch.
668
- // Result set modifier should only be used for projection for now.
669
- const limit = new PrimitiveInstanceValue(
670
- GenericTypeExplicitReference.create(
671
- new GenericType(
672
- queryBuilderState.graphManagerState.graph.getPrimitiveType(
673
- PRIMITIVE_TYPE.INTEGER,
674
- ),
675
- ),
676
- ),
677
- multiplicityOne,
678
- );
679
- limit.values = [queryBuilderState.resultState.previewLimit];
680
- const takeFunction = new SimpleFunctionExpression(
681
- extractElementNameFromPath(
682
- QUERY_BUILDER_SUPPORTED_FUNCTIONS.TAKE,
683
- ),
684
- multiplicityOne,
685
- );
686
-
687
- // NOTE: `take()` does not work on `graphFetch()` or `serialize()` so we will put it
688
- // right next to `all()`
689
- const serializeFunction = func;
690
- const graphFetchFunc = guaranteeType(
691
- serializeFunction.parametersValues[0],
692
- SimpleFunctionExpression,
693
- );
694
- const getAllFunc = graphFetchFunc
695
- .parametersValues[0] as ValueSpecification;
696
- takeFunction.parametersValues[0] = getAllFunc;
697
- takeFunction.parametersValues[1] = limit;
698
- graphFetchFunc.parametersValues = [
699
- takeFunction,
700
- graphFetchFunc.parametersValues[1] as ValueSpecification,
701
- ];
702
- }
703
- }
704
- }
705
- }
706
- break;
707
- }
708
- default:
709
- break;
710
- }
145
+ // build fetch-structure
146
+ buildFetchStructure(
147
+ queryBuilderState.fetchStructureState,
148
+ lambdaFunction,
149
+ options,
150
+ );
711
151
 
712
152
  // build parameters
713
153
  if (