@finos/legend-query-builder 4.16.7 → 4.16.8
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/lib/graph/QueryBuilderMetaModelConst.d.ts +1 -0
- package/lib/graph/QueryBuilderMetaModelConst.d.ts.map +1 -1
- package/lib/graph/QueryBuilderMetaModelConst.js +1 -0
- package/lib/graph/QueryBuilderMetaModelConst.js.map +1 -1
- package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +5 -2
- package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts +3 -1
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js +99 -2
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js.map +1 -1
- package/lib/index.css +1 -1
- package/lib/package.json +5 -5
- package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.js +21 -2
- package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.d.ts +19 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.js +98 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderTypedAggregationStateBuilder.d.ts +21 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderTypedAggregationStateBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderTypedAggregationStateBuilder.js +102 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderTypedAggregationStateBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js +9 -3
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/{QueryBuilderRelationProjectValueSpecBuidler.d.ts → QueryBuilderRelationProjectValueSpecBuilder.d.ts} +1 -1
- package/lib/stores/fetch-structure/tds/projection/{QueryBuilderRelationProjectValueSpecBuidler.d.ts.map → QueryBuilderRelationProjectValueSpecBuilder.d.ts.map} +1 -1
- package/lib/stores/fetch-structure/tds/projection/{QueryBuilderRelationProjectValueSpecBuidler.js → QueryBuilderRelationProjectValueSpecBuilder.js} +1 -1
- package/lib/stores/fetch-structure/tds/projection/{QueryBuilderRelationProjectValueSpecBuidler.js.map → QueryBuilderRelationProjectValueSpecBuilder.js.map} +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.js +8 -9
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.js.map +1 -1
- package/package.json +15 -15
- package/src/graph/QueryBuilderMetaModelConst.ts +1 -0
- package/src/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +4 -4
- package/src/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts +223 -2
- package/src/stores/QueryBuilderStateBuilder.ts +40 -8
- package/src/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.ts +196 -0
- package/src/stores/fetch-structure/tds/aggregation/QueryBuilderTypedAggregationStateBuilder.ts +253 -0
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +11 -3
- package/src/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.ts +8 -9
- package/tsconfig.json +3 -1
- /package/src/stores/fetch-structure/tds/projection/{QueryBuilderRelationProjectValueSpecBuidler.ts → QueryBuilderRelationProjectValueSpecBuilder.ts} +0 -0
| @@ -0,0 +1,98 @@ | |
| 1 | 
            +
            /**
         | 
| 2 | 
            +
             * Copyright (c) 2020-present, Goldman Sachs
         | 
| 3 | 
            +
             *
         | 
| 4 | 
            +
             * Licensed under the Apache License, Version 2.0 (the "License");
         | 
| 5 | 
            +
             * you may not use this file except in compliance with the License.
         | 
| 6 | 
            +
             * You may obtain a copy of the License at
         | 
| 7 | 
            +
             *
         | 
| 8 | 
            +
             *     http://www.apache.org/licenses/LICENSE-2.0
         | 
| 9 | 
            +
             *
         | 
| 10 | 
            +
             * Unless required by applicable law or agreed to in writing, software
         | 
| 11 | 
            +
             * distributed under the License is distributed on an "AS IS" BASIS,
         | 
| 12 | 
            +
             * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         | 
| 13 | 
            +
             * See the License for the specific language governing permissions and
         | 
| 14 | 
            +
             * limitations under the License.
         | 
| 15 | 
            +
             */
         | 
| 16 | 
            +
            import { ColSpecArray, extractElementNameFromPath, SimpleFunctionExpression, ColSpecArrayInstance, Multiplicity, ColSpec, GenericType, GenericTypeExplicitReference, Relation, RelationColumn, RelationType, LambdaFunctionInstanceValue, AbstractPropertyExpression, PropertyExplicitReference, Property, VariableExpression, } from '@finos/legend-graph';
         | 
| 17 | 
            +
            import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../../graph/QueryBuilderMetaModelConst.js';
         | 
| 18 | 
            +
            import { buildGenericLambdaFunctionInstanceValue } from '../../../QueryBuilderValueSpecificationHelper.js';
         | 
| 19 | 
            +
            import { guaranteeNonNullable, guaranteeType, UnsupportedOperationError, } from '@finos/legend-shared';
         | 
| 20 | 
            +
            import { DEFAULT_LAMBDA_VARIABLE_NAME } from '@finos/legend-data-cube';
         | 
| 21 | 
            +
            export const buildRelationAggregation = (precedingExpression, tdsState) => {
         | 
| 22 | 
            +
                // Verify that preceding expression is a relation project
         | 
| 23 | 
            +
                const projectFunction = guaranteeType(precedingExpression, SimpleFunctionExpression);
         | 
| 24 | 
            +
                if (projectFunction.functionName !==
         | 
| 25 | 
            +
                    extractElementNameFromPath(QUERY_BUILDER_SUPPORTED_FUNCTIONS.RELATION_PROJECT)) {
         | 
| 26 | 
            +
                    throw new UnsupportedOperationError(`Can't build relation groupBy() expression: previous expression must be project() column expression`);
         | 
| 27 | 
            +
                }
         | 
| 28 | 
            +
                // Build groupBy() expression
         | 
| 29 | 
            +
                const groupByFunction = new SimpleFunctionExpression(extractElementNameFromPath(QUERY_BUILDER_SUPPORTED_FUNCTIONS.RELATION_GROUP_BY));
         | 
| 30 | 
            +
                const queryBuilderState = tdsState.queryBuilderState;
         | 
| 31 | 
            +
                // Build normal (grouped) columns
         | 
| 32 | 
            +
                const groupByCols = new ColSpecArrayInstance(Multiplicity.ONE, undefined);
         | 
| 33 | 
            +
                const groupByColSpecArray = new ColSpecArray();
         | 
| 34 | 
            +
                groupByCols.values = [groupByColSpecArray];
         | 
| 35 | 
            +
                // Build aggregation columns
         | 
| 36 | 
            +
                const aggregationCols = new ColSpecArrayInstance(Multiplicity.ONE, undefined);
         | 
| 37 | 
            +
                const aggregationColSpecArray = new ColSpecArray();
         | 
| 38 | 
            +
                aggregationCols.values = [aggregationColSpecArray];
         | 
| 39 | 
            +
                // Build relation return type
         | 
| 40 | 
            +
                const relationType = new RelationType(RelationType.ID);
         | 
| 41 | 
            +
                // Add normal (non-aggregated) columns to groupByCols
         | 
| 42 | 
            +
                tdsState.projectionColumns
         | 
| 43 | 
            +
                    .filter((projectionColumnState) => !tdsState.aggregationState.columns.some((aggregationColumnState) => aggregationColumnState.projectionColumnState ===
         | 
| 44 | 
            +
                    projectionColumnState))
         | 
| 45 | 
            +
                    .forEach((projectionColumnState) => {
         | 
| 46 | 
            +
                    // Create and add column to groupByColSpecArray
         | 
| 47 | 
            +
                    const colSpec = new ColSpec();
         | 
| 48 | 
            +
                    colSpec.name = projectionColumnState.columnName;
         | 
| 49 | 
            +
                    groupByColSpecArray.colSpecs.push(colSpec);
         | 
| 50 | 
            +
                    // Add column return type to relationType
         | 
| 51 | 
            +
                    const returnType = guaranteeNonNullable(projectionColumnState.getColumnType(), `Can't create value spec for projection column ${projectionColumnState.columnName}. Missing type.`);
         | 
| 52 | 
            +
                    relationType.columns.push(new RelationColumn(projectionColumnState.columnName, returnType));
         | 
| 53 | 
            +
                });
         | 
| 54 | 
            +
                // Add aggregation columns to aggregationCols
         | 
| 55 | 
            +
                tdsState.aggregationState.columns.forEach((aggregationColumnState) => {
         | 
| 56 | 
            +
                    // Create and add column to aggregationColSpecArray
         | 
| 57 | 
            +
                    const colSpec = new ColSpec();
         | 
| 58 | 
            +
                    colSpec.name = aggregationColumnState.columnName;
         | 
| 59 | 
            +
                    aggregationColSpecArray.colSpecs.push(colSpec);
         | 
| 60 | 
            +
                    // Build map function (function1)
         | 
| 61 | 
            +
                    // First, get the ColSpec from the preceding projection so we can get the name of the projected column.
         | 
| 62 | 
            +
                    const projectionColSpec = guaranteeNonNullable(guaranteeNonNullable(projectFunction.parametersValues[1].values[0], 'Could not find ColSpec array in project() function first parameter').colSpecs.find((_colSpec) => _colSpec.name === aggregationColumnState.columnName), `Could not find projected column matching aggregation column '${aggregationColumnState.columnName}'`);
         | 
| 63 | 
            +
                    const projectedPropertyExpression = guaranteeType(guaranteeType(projectionColSpec.function1, LambdaFunctionInstanceValue)
         | 
| 64 | 
            +
                        .values[0]?.expressionSequence[0], AbstractPropertyExpression);
         | 
| 65 | 
            +
                    const projectedProperty = guaranteeType(projectedPropertyExpression.func.value, Property);
         | 
| 66 | 
            +
                    // Second, build a new AbstractPropertyExpression for our map function
         | 
| 67 | 
            +
                    const newPropertyExpression = new AbstractPropertyExpression('');
         | 
| 68 | 
            +
                    newPropertyExpression.func = PropertyExplicitReference.create(new Property(projectionColSpec.name, projectedProperty.multiplicity, projectedProperty.genericType, projectedProperty._OWNER));
         | 
| 69 | 
            +
                    newPropertyExpression.parametersValues = [
         | 
| 70 | 
            +
                        new VariableExpression(DEFAULT_LAMBDA_VARIABLE_NAME, Multiplicity.ONE),
         | 
| 71 | 
            +
                    ];
         | 
| 72 | 
            +
                    const mapLambda = buildGenericLambdaFunctionInstanceValue(DEFAULT_LAMBDA_VARIABLE_NAME, [newPropertyExpression], queryBuilderState.graphManagerState.graph);
         | 
| 73 | 
            +
                    colSpec.function1 = mapLambda;
         | 
| 74 | 
            +
                    // Reduce function (function2)
         | 
| 75 | 
            +
                    const reduceLambda = buildGenericLambdaFunctionInstanceValue(aggregationColumnState.lambdaParameterName, [
         | 
| 76 | 
            +
                        aggregationColumnState.operator.buildAggregateExpressionFromState(aggregationColumnState),
         | 
| 77 | 
            +
                    ], aggregationColumnState.aggregationState.tdsState.queryBuilderState
         | 
| 78 | 
            +
                        .graphManagerState.graph);
         | 
| 79 | 
            +
                    colSpec.function2 = reduceLambda;
         | 
| 80 | 
            +
                    // Add column return type to relationType
         | 
| 81 | 
            +
                    const returnType = guaranteeNonNullable(aggregationColumnState.getColumnType(), `Can't create value spec for aggregation column ${aggregationColumnState.columnName}. Missing type.`);
         | 
| 82 | 
            +
                    relationType.columns.push(new RelationColumn(aggregationColumnState.columnName, returnType));
         | 
| 83 | 
            +
                });
         | 
| 84 | 
            +
                groupByFunction.parametersValues = [
         | 
| 85 | 
            +
                    precedingExpression,
         | 
| 86 | 
            +
                    groupByCols,
         | 
| 87 | 
            +
                    aggregationCols,
         | 
| 88 | 
            +
                ];
         | 
| 89 | 
            +
                const relationGenericType = new GenericType(Relation.INSTANCE);
         | 
| 90 | 
            +
                const relationTypeGenericType = new GenericType(relationType);
         | 
| 91 | 
            +
                relationGenericType.typeArguments = [
         | 
| 92 | 
            +
                    GenericTypeExplicitReference.create(relationTypeGenericType),
         | 
| 93 | 
            +
                ];
         | 
| 94 | 
            +
                groupByFunction.genericType =
         | 
| 95 | 
            +
                    GenericTypeExplicitReference.create(relationGenericType);
         | 
| 96 | 
            +
                return groupByFunction;
         | 
| 97 | 
            +
            };
         | 
| 98 | 
            +
            //# sourceMappingURL=QueryBuilderRelationAggregationValueSpecBuilder.js.map
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            {"version":3,"file":"QueryBuilderRelationAggregationValueSpecBuilder.js","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.ts"],"names":[],"mappings":"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"}
         | 
    
        package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderTypedAggregationStateBuilder.d.ts
    ADDED
    
    | @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            /**
         | 
| 2 | 
            +
             * Copyright (c) 2020-present, Goldman Sachs
         | 
| 3 | 
            +
             *
         | 
| 4 | 
            +
             * Licensed under the Apache License, Version 2.0 (the "License");
         | 
| 5 | 
            +
             * you may not use this file except in compliance with the License.
         | 
| 6 | 
            +
             * You may obtain a copy of the License at
         | 
| 7 | 
            +
             *
         | 
| 8 | 
            +
             *     http://www.apache.org/licenses/LICENSE-2.0
         | 
| 9 | 
            +
             *
         | 
| 10 | 
            +
             * Unless required by applicable law or agreed to in writing, software
         | 
| 11 | 
            +
             * distributed under the License is distributed on an "AS IS" BASIS,
         | 
| 12 | 
            +
             * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         | 
| 13 | 
            +
             * See the License for the specific language governing permissions and
         | 
| 14 | 
            +
             * limitations under the License.
         | 
| 15 | 
            +
             */
         | 
| 16 | 
            +
            import { type ColSpec, type LambdaFunction, SimpleFunctionExpression } from '@finos/legend-graph';
         | 
| 17 | 
            +
            import { type QueryBuilderState } from '../../../QueryBuilderState.js';
         | 
| 18 | 
            +
            export declare const processTypedAggregationColSpec: (colSpec: ColSpec, parentExpression: SimpleFunctionExpression | undefined, queryBuilderState: QueryBuilderState) => void;
         | 
| 19 | 
            +
            export declare const processTypedGroupByExpression: (expression: SimpleFunctionExpression, queryBuilderState: QueryBuilderState, parentLambda: LambdaFunction) => void;
         | 
| 20 | 
            +
            export declare const isTypedGroupByExpression: (expression: SimpleFunctionExpression) => boolean;
         | 
| 21 | 
            +
            //# sourceMappingURL=QueryBuilderTypedAggregationStateBuilder.d.ts.map
         | 
    
        package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderTypedAggregationStateBuilder.d.ts.map
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            {"version":3,"file":"QueryBuilderTypedAggregationStateBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/aggregation/QueryBuilderTypedAggregationStateBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,cAAc,EAKnB,wBAAwB,EAEzB,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAMvC,eAAO,MAAM,8BAA8B,YAChC,OAAO,oBACE,wBAAwB,GAAG,SAAS,qBACnC,iBAAiB,KACnC,IAuHF,CAAC;AAEF,eAAO,MAAM,6BAA6B,eAC5B,wBAAwB,qBACjB,iBAAiB,gBACtB,cAAc,KAC3B,IAiEF,CAAC;AAEF,eAAO,MAAM,wBAAwB,eACvB,wBAAwB,KACnC,OAWF,CAAC"}
         | 
    
        package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderTypedAggregationStateBuilder.js
    ADDED
    
    | @@ -0,0 +1,102 @@ | |
| 1 | 
            +
            /**
         | 
| 2 | 
            +
             * Copyright (c) 2020-present, Goldman Sachs
         | 
| 3 | 
            +
             *
         | 
| 4 | 
            +
             * Licensed under the Apache License, Version 2.0 (the "License");
         | 
| 5 | 
            +
             * you may not use this file except in compliance with the License.
         | 
| 6 | 
            +
             * You may obtain a copy of the License at
         | 
| 7 | 
            +
             *
         | 
| 8 | 
            +
             *     http://www.apache.org/licenses/LICENSE-2.0
         | 
| 9 | 
            +
             *
         | 
| 10 | 
            +
             * Unless required by applicable law or agreed to in writing, software
         | 
| 11 | 
            +
             * distributed under the License is distributed on an "AS IS" BASIS,
         | 
| 12 | 
            +
             * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         | 
| 13 | 
            +
             * See the License for the specific language governing permissions and
         | 
| 14 | 
            +
             * limitations under the License.
         | 
| 15 | 
            +
             */
         | 
| 16 | 
            +
            import { ColSpecArrayInstance, LambdaFunctionInstanceValue, matchFunctionName, RelationType, SimpleFunctionExpression, VariableExpression, } from '@finos/legend-graph';
         | 
| 17 | 
            +
            import { assertTrue, assertType, guaranteeNonNullable, guaranteeType, returnUndefOnError, UnsupportedOperationError, } from '@finos/legend-shared';
         | 
| 18 | 
            +
            import { QUERY_BUILDER_LAMBDA_WRITER_MODE, } from '../../../QueryBuilderState.js';
         | 
| 19 | 
            +
            import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../../graph/QueryBuilderMetaModelConst.js';
         | 
| 20 | 
            +
            import { QueryBuilderValueSpecificationProcessor } from '../../../QueryBuilderStateBuilder.js';
         | 
| 21 | 
            +
            import { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
         | 
| 22 | 
            +
            import { QueryBuilderAggregateOperator_Wavg } from './operators/QueryBuilderAggregateOperator_Wavg.js';
         | 
| 23 | 
            +
            export const processTypedAggregationColSpec = (colSpec, parentExpression, queryBuilderState) => {
         | 
| 24 | 
            +
                // check parent expression
         | 
| 25 | 
            +
                assertTrue(Boolean(parentExpression &&
         | 
| 26 | 
            +
                    matchFunctionName(parentExpression.functionName, QUERY_BUILDER_SUPPORTED_FUNCTIONS.RELATION_GROUP_BY)), `Can't process typed aggregation ColSpec: only supported when used within a groupBy() expression`);
         | 
| 27 | 
            +
                // Check that there are 2 lambdas, one for map and one for reduce
         | 
| 28 | 
            +
                const mapLambdaFunctionInstance = guaranteeType(colSpec.function1, LambdaFunctionInstanceValue, `Can't process colSpec: function1 is not a lambda function instance value`);
         | 
| 29 | 
            +
                assertTrue(mapLambdaFunctionInstance.values.length === 1, `Can't process typed aggregation ColSpec. function1 should only have 1 lambda value.`);
         | 
| 30 | 
            +
                assertTrue(guaranteeNonNullable(mapLambdaFunctionInstance.values[0]).expressionSequence
         | 
| 31 | 
            +
                    .length === 1, `Can't process typed aggregation ColSpec. function1 lambda should only have 1 expression.`);
         | 
| 32 | 
            +
                const reduceLambdaFunctionInstance = guaranteeType(colSpec.function2, LambdaFunctionInstanceValue, `Can't process colSpec: function2 is not a lambda function instance value`);
         | 
| 33 | 
            +
                // build state
         | 
| 34 | 
            +
                if (queryBuilderState.fetchStructureState.implementation instanceof
         | 
| 35 | 
            +
                    QueryBuilderTDSState) {
         | 
| 36 | 
            +
                    const tdsState = queryBuilderState.fetchStructureState.implementation;
         | 
| 37 | 
            +
                    const aggregationState = tdsState.aggregationState;
         | 
| 38 | 
            +
                    const projectionColumnState = guaranteeNonNullable(tdsState.projectionColumns.find((projectionColumn) => projectionColumn.columnName === colSpec.name), `Projection column with name ${colSpec.name} not found`);
         | 
| 39 | 
            +
                    const reduceLambdaFunction = guaranteeNonNullable(reduceLambdaFunctionInstance.values[0], `Can't process colSpec: function2 lambda function is missing`);
         | 
| 40 | 
            +
                    assertTrue(reduceLambdaFunction.expressionSequence.length === 1, `Can't process colSpec: only support colSpec function2 lambda body with 1 expression`);
         | 
| 41 | 
            +
                    assertTrue(reduceLambdaFunction.functionType.parameters.length === 1, `Can't process colSpec function2 lambda: only support lambda with 1 parameter`);
         | 
| 42 | 
            +
                    const reduceFunctionExpression = guaranteeType(reduceLambdaFunction.expressionSequence[0], SimpleFunctionExpression, `Can't process colSpec: only support colSpec function2 lambda body with 1 expression`);
         | 
| 43 | 
            +
                    const lambdaParam = guaranteeType(reduceLambdaFunction.functionType.parameters[0], VariableExpression, `Can't process colSpec function2 lambda: parameter is missing`);
         | 
| 44 | 
            +
                    for (const operator of aggregationState.operators) {
         | 
| 45 | 
            +
                        // NOTE: this allow plugin author to either return `undefined` or throw error
         | 
| 46 | 
            +
                        // if there is a problem with building the lambda. Either case, the plugin is
         | 
| 47 | 
            +
                        // considered as not supporting the lambda.
         | 
| 48 | 
            +
                        const aggregateColumnState = returnUndefOnError(() => operator.buildAggregateColumnState(reduceFunctionExpression, lambdaParam, projectionColumnState));
         | 
| 49 | 
            +
                        if (projectionColumnState.wavgWeight &&
         | 
| 50 | 
            +
                            aggregateColumnState &&
         | 
| 51 | 
            +
                            aggregateColumnState.operator instanceof
         | 
| 52 | 
            +
                                QueryBuilderAggregateOperator_Wavg) {
         | 
| 53 | 
            +
                            aggregateColumnState.operator.setWeight(projectionColumnState.wavgWeight);
         | 
| 54 | 
            +
                        }
         | 
| 55 | 
            +
                        if (aggregateColumnState) {
         | 
| 56 | 
            +
                            aggregationState.addColumn(aggregateColumnState);
         | 
| 57 | 
            +
                            // Update parent groupBy() expression's return type with this column's return type
         | 
| 58 | 
            +
                            // (a temporary return type was set when we processed the groupBy() protocol)
         | 
| 59 | 
            +
                            const parentGroupByRelationType = guaranteeType(parentExpression?.genericType?.value.typeArguments?.[0]?.value
         | 
| 60 | 
            +
                                .rawType, RelationType, `Can't process colSpec: parent groupBy() expression's return type is not a relation`);
         | 
| 61 | 
            +
                            const relationTypeColumn = guaranteeNonNullable(parentGroupByRelationType.columns.find((_column) => _column.name === colSpec.name), `Can't process colSpec: Can't find column '${colSpec.name}' in parent groupBy() expression's relation return type`);
         | 
| 62 | 
            +
                            relationTypeColumn.type =
         | 
| 63 | 
            +
                                aggregateColumnState.getColumnType() ?? relationTypeColumn.type;
         | 
| 64 | 
            +
                            return;
         | 
| 65 | 
            +
                        }
         | 
| 66 | 
            +
                    }
         | 
| 67 | 
            +
                }
         | 
| 68 | 
            +
                throw new UnsupportedOperationError(`Can't process aggregate expression function: no compatible aggregate operator processer available from plugins`);
         | 
| 69 | 
            +
            };
         | 
| 70 | 
            +
            export const processTypedGroupByExpression = (expression, queryBuilderState, parentLambda) => {
         | 
| 71 | 
            +
                // check parameters
         | 
| 72 | 
            +
                assertTrue(expression.parametersValues.length === 3, `Can't process groupBy() expression: groupBy() expects 2 arguments`);
         | 
| 73 | 
            +
                // check preceding expression is relation project, then process the project
         | 
| 74 | 
            +
                const precedingExpression = guaranteeType(expression.parametersValues[0], SimpleFunctionExpression, `Can't process groupBy() expression: only support groupBy() immediately following an expression`);
         | 
| 75 | 
            +
                assertTrue(matchFunctionName(precedingExpression.functionName, [
         | 
| 76 | 
            +
                    QUERY_BUILDER_SUPPORTED_FUNCTIONS.RELATION_PROJECT,
         | 
| 77 | 
            +
                ]), `Can't process groupBy() expression: only support groupBy() immediately following relation project()`);
         | 
| 78 | 
            +
                QueryBuilderValueSpecificationProcessor.process(precedingExpression, parentLambda, queryBuilderState);
         | 
| 79 | 
            +
                const tdsState = guaranteeType(queryBuilderState.fetchStructureState.implementation, QueryBuilderTDSState);
         | 
| 80 | 
            +
                // process normal (non-aggregation) columns (ensure columns exist in project expression)
         | 
| 81 | 
            +
                const columnExpressions = guaranteeType(expression.parametersValues[1], ColSpecArrayInstance, `Can't process groupBy() expression: groupBy() expects argument #1 to be a ColSpecArrayInstance`);
         | 
| 82 | 
            +
                assertTrue(columnExpressions.values.length === 1, `Can't process groupBy() expression: groupBy() expects argument #1 to be a ColSpecArrayInstance with 1 element`);
         | 
| 83 | 
            +
                queryBuilderState.setLambdaWriteMode(QUERY_BUILDER_LAMBDA_WRITER_MODE.TYPED_FETCH_STRUCTURE);
         | 
| 84 | 
            +
                columnExpressions.values[0]?.colSpecs.forEach((colSpec) => {
         | 
| 85 | 
            +
                    assertTrue(tdsState.projectionColumns.filter((projectedColumn) => projectedColumn.columnName === colSpec.name).length === 1, `Can't process groupBy() expression: column '${colSpec.name}' not found in project() expression`);
         | 
| 86 | 
            +
                });
         | 
| 87 | 
            +
                // process aggregation columns
         | 
| 88 | 
            +
                const aggregationLambdas = expression.parametersValues[2];
         | 
| 89 | 
            +
                assertType(aggregationLambdas, ColSpecArrayInstance, `Can't process groupBy() expression: groupBy() expects argument #2 to be a ColSpecArrayInstance`);
         | 
| 90 | 
            +
                QueryBuilderValueSpecificationProcessor.processChild(aggregationLambdas, expression, parentLambda, queryBuilderState);
         | 
| 91 | 
            +
            };
         | 
| 92 | 
            +
            export const isTypedGroupByExpression = (expression) => {
         | 
| 93 | 
            +
                return (expression.functionName ===
         | 
| 94 | 
            +
                    QUERY_BUILDER_SUPPORTED_FUNCTIONS.RELATION_GROUP_BY ||
         | 
| 95 | 
            +
                    (matchFunctionName(expression.functionName, [
         | 
| 96 | 
            +
                        QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY,
         | 
| 97 | 
            +
                        QUERY_BUILDER_SUPPORTED_FUNCTIONS.RELATION_GROUP_BY,
         | 
| 98 | 
            +
                    ]) &&
         | 
| 99 | 
            +
                        expression.parametersValues.length === 3 &&
         | 
| 100 | 
            +
                        expression.parametersValues[1] instanceof ColSpecArrayInstance));
         | 
| 101 | 
            +
            };
         | 
| 102 | 
            +
            //# sourceMappingURL=QueryBuilderTypedAggregationStateBuilder.js.map
         | 
    
        package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderTypedAggregationStateBuilder.js.map
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            {"version":3,"file":"QueryBuilderTypedAggregationStateBuilder.js","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/aggregation/QueryBuilderTypedAggregationStateBuilder.ts"],"names":[],"mappings":"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"}
         | 
| @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"QueryBuilderProjectionValueSpecificationBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,cAAc,EAcpB,MAAM,qBAAqB,CAAC;AAW7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,yDAAyD,CAAC; | 
| 1 | 
            +
            {"version":3,"file":"QueryBuilderProjectionValueSpecificationBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,cAAc,EAcpB,MAAM,qBAAqB,CAAC;AAW7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,yDAAyD,CAAC;AAgEjE,eAAO,MAAM,gBAAgB,aACjB,oBAAoB,kBACd,cAAc,YACpB,2BAA2B,KACpC,IA4TF,CAAC"}
         | 
    
        package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js
    CHANGED
    
    | @@ -21,9 +21,10 @@ import { buildGenericLambdaFunctionInstanceValue } from '../../../QueryBuilderVa | |
| 21 21 | 
             
            import { buildPropertyExpressionChain, } from '../../../QueryBuilderValueSpecificationBuilderHelper.js';
         | 
| 22 22 | 
             
            import { appendOLAPGroupByState } from '../window/QueryBuilderWindowValueSpecificationBuilder.js';
         | 
| 23 23 | 
             
            import { appendPostFilter } from '../post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js';
         | 
| 24 | 
            -
            import { buildRelationProjection } from './ | 
| 24 | 
            +
            import { buildRelationProjection } from './QueryBuilderRelationProjectValueSpecBuilder.js';
         | 
| 25 25 | 
             
            import { QueryBuilderAggregateOperator_Wavg } from '../aggregation/operators/QueryBuilderAggregateOperator_Wavg.js';
         | 
| 26 26 | 
             
            import { appendResultSetModifier } from '../result-modifier/ResultModifierValueSpecificationBuilder.js';
         | 
| 27 | 
            +
            import { buildRelationAggregation } from '../aggregation/QueryBuilderRelationAggregationValueSpecBuilder.js';
         | 
| 27 28 | 
             
            const buildProjectColFunc = (tdsState, projectionColumnState, options) => {
         | 
| 28 29 | 
             
                const colFunc = new SimpleFunctionExpression(extractElementNameFromPath(QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_COL));
         | 
| 29 30 | 
             
                let columnLambda;
         | 
| @@ -51,7 +52,8 @@ export const appendProjection = (tdsState, lambdaFunction, options) => { | |
| 51 52 | 
             
                const queryBuilderState = tdsState.queryBuilderState;
         | 
| 52 53 | 
             
                const precedingExpression = guaranteeNonNullable(lambdaFunction.expressionSequence[0], `Can't build projection expression: preceding expression is not defined`);
         | 
| 53 54 | 
             
                // build projection
         | 
| 54 | 
            -
                if (tdsState.aggregationState.columns.length | 
| 55 | 
            +
                if (tdsState.aggregationState.columns.length &&
         | 
| 56 | 
            +
                    !tdsState.queryBuilderState.isFetchStructureTyped) {
         | 
| 55 57 | 
             
                    // aggregation
         | 
| 56 58 | 
             
                    const groupByFunction = new SimpleFunctionExpression(extractElementNameFromPath(QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY));
         | 
| 57 59 | 
             
                    const colLambdas = new CollectionInstanceValue(queryBuilderState.graphManagerState.graph.getMultiplicity(tdsState.projectionColumns.length -
         | 
| @@ -198,7 +200,11 @@ export const appendProjection = (tdsState, lambdaFunction, options) => { | |
| 198 200 | 
             
                    }
         | 
| 199 201 | 
             
                    else {
         | 
| 200 202 | 
             
                        const projectFunction = buildRelationProjection(precedingExpression, tdsState, options);
         | 
| 201 | 
            -
                         | 
| 203 | 
            +
                        const aggregationFunction = tdsState.aggregationState.columns.length
         | 
| 204 | 
            +
                            ? buildRelationAggregation(projectFunction, tdsState)
         | 
| 205 | 
            +
                            : null;
         | 
| 206 | 
            +
                        lambdaFunction.expressionSequence[0] =
         | 
| 207 | 
            +
                            aggregationFunction ?? projectFunction;
         | 
| 202 208 | 
             
                    }
         | 
| 203 209 | 
             
                }
         | 
| 204 210 | 
             
                // build olapGroupBy
         | 
| @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"QueryBuilderProjectionValueSpecificationBuilder.js","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,uBAAuB,EACvB,0BAA0B,EAC1B,WAAW,EACX,4BAA4B,EAC5B,sBAAsB,EACtB,wBAAwB,EACxB,mCAAmC,EACnC,iCAAiC,EACjC,qBAAqB,EACrB,iCAAiC,EACjC,aAAa,EACb,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,EAAE,EACF,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,2CAA2C,EAC3C,uCAAuC,GACxC,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAAE,iCAAiC,EAAE,MAAM,iDAAiD,CAAC;AACpG,OAAO,EAAE,uCAAuC,EAAE,MAAM,kDAAkD,CAAC;AAC3G,OAAO,EACL,4BAA4B,GAE7B,MAAM,yDAAyD,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,MAAM,mEAAmE,CAAC;AACrG,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,kCAAkC,EAAE,MAAM,gEAAgE,CAAC;AACpH,OAAO,EAAE,uBAAuB,EAAE,MAAM,+DAA+D,CAAC; | 
| 1 | 
            +
            {"version":3,"file":"QueryBuilderProjectionValueSpecificationBuilder.js","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts"],"names":[],"mappings":"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"}
         | 
| @@ -17,4 +17,4 @@ import { type ValueSpecification, SimpleFunctionExpression } from '@finos/legend | |
| 17 17 | 
             
            import type { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
         | 
| 18 18 | 
             
            import { type LambdaFunctionBuilderOption } from '../../../QueryBuilderValueSpecificationBuilderHelper.js';
         | 
| 19 19 | 
             
            export declare const buildRelationProjection: (precedingExpression: ValueSpecification, tdsState: QueryBuilderTDSState, options?: LambdaFunctionBuilderOption) => SimpleFunctionExpression;
         | 
| 20 | 
            -
            //# sourceMappingURL= | 
| 20 | 
            +
            //# sourceMappingURL=QueryBuilderRelationProjectValueSpecBuilder.d.ts.map
         | 
| @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":" | 
| 1 | 
            +
            {"version":3,"file":"QueryBuilderRelationProjectValueSpecBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,kBAAkB,EAEvB,wBAAwB,EAazB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,yDAAyD,CAAC;AAMjE,eAAO,MAAM,uBAAuB,wBACb,kBAAkB,YAC7B,oBAAoB,YACpB,2BAA2B,KACpC,wBA8EF,CAAC"}
         | 
| @@ -62,4 +62,4 @@ export const buildRelationProjection = (precedingExpression, tdsState, options) | |
| 62 62 | 
             
                    GenericTypeExplicitReference.create(relationGenericType);
         | 
| 63 63 | 
             
                return projectFunction;
         | 
| 64 64 | 
             
            };
         | 
| 65 | 
            -
            //# sourceMappingURL= | 
| 65 | 
            +
            //# sourceMappingURL=QueryBuilderRelationProjectValueSpecBuilder.js.map
         | 
| @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":" | 
| 1 | 
            +
            {"version":3,"file":"QueryBuilderRelationProjectValueSpecBuilder.js","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.ts"],"names":[],"mappings":"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"}
         | 
    
        package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.d.ts.map
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"QueryBuilderTypedProjectionStateBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,cAAc,EACnB,wBAAwB,EAGzB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAOvC,eAAO,MAAM,gCAAgC,eAC/B,wBAAwB,qBACjB,iBAAiB,gBACtB,cAAc,KAC3B,IAgDF,CAAC;AAEF,eAAO,MAAM,2BAA2B,eAC1B,wBAAwB,KACnC, | 
| 1 | 
            +
            {"version":3,"file":"QueryBuilderTypedProjectionStateBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,cAAc,EACnB,wBAAwB,EAGzB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAOvC,eAAO,MAAM,gCAAgC,eAC/B,wBAAwB,qBACjB,iBAAiB,gBACtB,cAAc,KAC3B,IAgDF,CAAC;AAEF,eAAO,MAAM,2BAA2B,eAC1B,wBAAwB,KACnC,OAWF,CAAC"}
         | 
    
        package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.js
    CHANGED
    
    | @@ -41,14 +41,13 @@ export const processTypedTDSProjectExpression = (expression, queryBuilderState, | |
| 41 41 | 
             
                QueryBuilderValueSpecificationProcessor.processChild(classInstance, expression, parentLambda, queryBuilderState);
         | 
| 42 42 | 
             
            };
         | 
| 43 43 | 
             
            export const isTypedProjectionExpression = (expression) => {
         | 
| 44 | 
            -
                 | 
| 45 | 
            -
                    QUERY_BUILDER_SUPPORTED_FUNCTIONS. | 
| 46 | 
            -
                     | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
                return false;
         | 
| 44 | 
            +
                return (expression.functionName ===
         | 
| 45 | 
            +
                    QUERY_BUILDER_SUPPORTED_FUNCTIONS.RELATION_PROJECT ||
         | 
| 46 | 
            +
                    (matchFunctionName(expression.functionName, [
         | 
| 47 | 
            +
                        QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_PROJECT,
         | 
| 48 | 
            +
                        QUERY_BUILDER_SUPPORTED_FUNCTIONS.RELATION_PROJECT,
         | 
| 49 | 
            +
                    ]) &&
         | 
| 50 | 
            +
                        expression.parametersValues.length === 2 &&
         | 
| 51 | 
            +
                        expression.parametersValues[1] instanceof ColSpecArrayInstance));
         | 
| 53 52 | 
             
            };
         | 
| 54 53 | 
             
            //# sourceMappingURL=QueryBuilderTypedProjectionStateBuilder.js.map
         | 
    
        package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.js.map
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"QueryBuilderTypedProjectionStateBuilder.js","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,8BAA8B,EAAE,MAAM,wDAAwD,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EACL,gCAAgC,GAEjC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,iCAAiC,EACjC,yCAAyC,GAC1C,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,uCAAuC,EAAE,MAAM,sCAAsC,CAAC;AAE/F,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,UAAoC,EACpC,iBAAoC,EACpC,YAA4B,EACtB,EAAE;IACR,mBAAmB;IACnB,UAAU,CACR,UAAU,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EACxC,+EAA+E,CAChF,CAAC;IACF,yBAAyB;IACzB,iBAAiB,CAAC,mBAAmB,CAAC,oBAAoB,CACxD,8BAA8B,CAAC,sBAAsB,CACtD,CAAC;IAEF,6BAA6B;IAC7B,MAAM,mBAAmB,GAAG,aAAa,CACvC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAC9B,wBAAwB,EACxB,4GAA4G,CAC7G,CAAC;IACF,UAAU,CACR,iBAAiB,CAAC,mBAAmB,CAAC,YAAY,EAAE;QAClD,yCAAyC,CAAC,OAAO;QACjD,yCAAyC,CAAC,gBAAgB;QAC1D,yCAAyC,CAAC,yBAAyB;QACnE,iCAAiC,CAAC,MAAM;QACxC,iCAAiC,CAAC,SAAS;KAC5C,CAAC,EACF,2IAA2I,CAC5I,CAAC;IACF,uCAAuC,CAAC,OAAO,CAC7C,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,CAClB,CAAC;IACF,gBAAgB;IAChB,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACrD,UAAU,CACR,aAAa,EACb,oBAAoB,EACpB,8GAA8G,CAC/G,CAAC;IACF,iBAAiB,CAAC,kBAAkB,CAClC,gCAAgC,CAAC,qBAAqB,CACvD,CAAC;IACF,uCAAuC,CAAC,YAAY,CAClD,aAAa,EACb,UAAU,EACV,YAAY,EACZ,iBAAiB,CAClB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,UAAoC,EAC3B,EAAE;IACX, | 
| 1 | 
            +
            {"version":3,"file":"QueryBuilderTypedProjectionStateBuilder.js","sourceRoot":"","sources":["../../../../../src/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,8BAA8B,EAAE,MAAM,wDAAwD,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EACL,gCAAgC,GAEjC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,iCAAiC,EACjC,yCAAyC,GAC1C,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,uCAAuC,EAAE,MAAM,sCAAsC,CAAC;AAE/F,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,UAAoC,EACpC,iBAAoC,EACpC,YAA4B,EACtB,EAAE;IACR,mBAAmB;IACnB,UAAU,CACR,UAAU,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EACxC,+EAA+E,CAChF,CAAC;IACF,yBAAyB;IACzB,iBAAiB,CAAC,mBAAmB,CAAC,oBAAoB,CACxD,8BAA8B,CAAC,sBAAsB,CACtD,CAAC;IAEF,6BAA6B;IAC7B,MAAM,mBAAmB,GAAG,aAAa,CACvC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAC9B,wBAAwB,EACxB,4GAA4G,CAC7G,CAAC;IACF,UAAU,CACR,iBAAiB,CAAC,mBAAmB,CAAC,YAAY,EAAE;QAClD,yCAAyC,CAAC,OAAO;QACjD,yCAAyC,CAAC,gBAAgB;QAC1D,yCAAyC,CAAC,yBAAyB;QACnE,iCAAiC,CAAC,MAAM;QACxC,iCAAiC,CAAC,SAAS;KAC5C,CAAC,EACF,2IAA2I,CAC5I,CAAC;IACF,uCAAuC,CAAC,OAAO,CAC7C,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,CAClB,CAAC;IACF,gBAAgB;IAChB,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACrD,UAAU,CACR,aAAa,EACb,oBAAoB,EACpB,8GAA8G,CAC/G,CAAC;IACF,iBAAiB,CAAC,kBAAkB,CAClC,gCAAgC,CAAC,qBAAqB,CACvD,CAAC;IACF,uCAAuC,CAAC,YAAY,CAClD,aAAa,EACb,UAAU,EACV,YAAY,EACZ,iBAAiB,CAClB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,UAAoC,EAC3B,EAAE;IACX,OAAO,CACL,UAAU,CAAC,YAAY;QACrB,iCAAiC,CAAC,gBAAgB;QACpD,CAAC,iBAAiB,CAAC,UAAU,CAAC,YAAY,EAAE;YAC1C,iCAAiC,CAAC,WAAW;YAC7C,iCAAiC,CAAC,gBAAgB;SACnD,CAAC;YACA,UAAU,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;YACxC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,oBAAoB,CAAC,CAClE,CAAC;AACJ,CAAC,CAAC"}
         | 
    
        package/package.json
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            {
         | 
| 2 2 | 
             
              "name": "@finos/legend-query-builder",
         | 
| 3 | 
            -
              "version": "4.16. | 
| 3 | 
            +
              "version": "4.16.8",
         | 
| 4 4 | 
             
              "description": "Legend query builder core",
         | 
| 5 5 | 
             
              "keywords": [
         | 
| 6 6 | 
             
                "legend",
         | 
| @@ -42,19 +42,19 @@ | |
| 42 42 | 
             
                "test:watch": "jest --watch"
         | 
| 43 43 | 
             
              },
         | 
| 44 44 | 
             
              "dependencies": {
         | 
| 45 | 
            -
                "@finos/legend-application": "16.0. | 
| 46 | 
            -
                "@finos/legend-art": "7.1. | 
| 47 | 
            -
                "@finos/legend-code-editor": "2.0. | 
| 48 | 
            -
                "@finos/legend-data-cube": "0.1. | 
| 49 | 
            -
                "@finos/legend-graph": "32.1. | 
| 50 | 
            -
                "@finos/legend-lego": "2.0. | 
| 51 | 
            -
                "@finos/legend-server-depot": "6.0. | 
| 52 | 
            -
                "@finos/legend-shared": "11.0. | 
| 53 | 
            -
                "@finos/legend-storage": "3.0. | 
| 45 | 
            +
                "@finos/legend-application": "16.0.27",
         | 
| 46 | 
            +
                "@finos/legend-art": "7.1.84",
         | 
| 47 | 
            +
                "@finos/legend-code-editor": "2.0.48",
         | 
| 48 | 
            +
                "@finos/legend-data-cube": "0.1.8",
         | 
| 49 | 
            +
                "@finos/legend-graph": "32.1.6",
         | 
| 50 | 
            +
                "@finos/legend-lego": "2.0.51",
         | 
| 51 | 
            +
                "@finos/legend-server-depot": "6.0.83",
         | 
| 52 | 
            +
                "@finos/legend-shared": "11.0.6",
         | 
| 53 | 
            +
                "@finos/legend-storage": "3.0.125",
         | 
| 54 54 | 
             
                "@testing-library/dom": "10.4.0",
         | 
| 55 55 | 
             
                "@testing-library/react": "16.2.0",
         | 
| 56 | 
            -
                "@types/react": "19.0. | 
| 57 | 
            -
                "@types/react-dom": "19.0. | 
| 56 | 
            +
                "@types/react": "19.0.10",
         | 
| 57 | 
            +
                "@types/react-dom": "19.0.4",
         | 
| 58 58 | 
             
                "chart.js": "4.4.7",
         | 
| 59 59 | 
             
                "mathjs": "14.2.1",
         | 
| 60 60 | 
             
                "mobx": "6.13.6",
         | 
| @@ -67,14 +67,14 @@ | |
| 67 67 | 
             
                "sql-formatter": "15.4.10"
         | 
| 68 68 | 
             
              },
         | 
| 69 69 | 
             
              "devDependencies": {
         | 
| 70 | 
            -
                "@finos/legend-dev-utils": "2.2. | 
| 70 | 
            +
                "@finos/legend-dev-utils": "2.2.2",
         | 
| 71 71 | 
             
                "@jest/globals": "29.7.0",
         | 
| 72 72 | 
             
                "cross-env": "7.0.3",
         | 
| 73 | 
            -
                "eslint": "9.20. | 
| 73 | 
            +
                "eslint": "9.20.1",
         | 
| 74 74 | 
             
                "jest": "29.7.0",
         | 
| 75 75 | 
             
                "npm-run-all": "4.1.5",
         | 
| 76 76 | 
             
                "rimraf": "6.0.1",
         | 
| 77 | 
            -
                "sass": "1. | 
| 77 | 
            +
                "sass": "1.85.0",
         | 
| 78 78 | 
             
                "typescript": "5.7.3"
         | 
| 79 79 | 
             
              },
         | 
| 80 80 | 
             
              "peerDependencies": {
         | 
| @@ -126,6 +126,7 @@ export enum QUERY_BUILDER_SUPPORTED_FUNCTIONS { | |
| 126 126 | 
             
              RELATION_DISTINCT = 'meta::pure::functions::relation::distinct',
         | 
| 127 127 | 
             
              RELATION_SORT = 'meta::pure::functions::relation::sort',
         | 
| 128 128 | 
             
              RELATION_SLICE = 'meta::pure::functions::relation::slice',
         | 
| 129 | 
            +
              RELATION_GROUP_BY = 'meta::pure::functions::relation::groupBy',
         | 
| 129 130 | 
             
              // filter
         | 
| 130 131 | 
             
              CONTAINS = 'meta::pure::functions::string::contains',
         | 
| 131 132 | 
             
              ENDS_WITH = 'meta::pure::functions::string::endsWith',
         | 
| @@ -21,11 +21,11 @@ import { | |
| 21 21 | 
             
              V1_buildGetAllFunctionExpression,
         | 
| 22 22 | 
             
              V1_buildGetAllVersionsFunctionExpression,
         | 
| 23 23 | 
             
              V1_buildGetAllVersionsInRangeFunctionExpression,
         | 
| 24 | 
            -
              V1_buildGroupByFunctionExpression,
         | 
| 25 24 | 
             
              V1_buildOLAPGroupByFunctionExpression,
         | 
| 26 25 | 
             
              V1_buildProjectFunctionExpression,
         | 
| 27 26 | 
             
              V1_buildSubTypePropertyExpressionTypeInference,
         | 
| 28 27 | 
             
              V1_buildWatermarkFunctionExpression,
         | 
| 28 | 
            +
              V1_buildGroupByFunctionExpression,
         | 
| 29 29 | 
             
            } from './v1/V1_QueryValueSpecificationBuilderHelper.js';
         | 
| 30 30 | 
             
            import {
         | 
| 31 31 | 
             
              type V1_GraphBuilderContext,
         | 
| @@ -159,10 +159,10 @@ export class QueryBuilder_PureProtocolProcessorPlugin extends PureProtocolProces | |
| 159 159 | 
             
                        processingContext,
         | 
| 160 160 | 
             
                      );
         | 
| 161 161 | 
             
                    } else if (
         | 
| 162 | 
            -
                      matchFunctionName(
         | 
| 163 | 
            -
                        functionName,
         | 
| 162 | 
            +
                      matchFunctionName(functionName, [
         | 
| 164 163 | 
             
                        QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY,
         | 
| 165 | 
            -
             | 
| 164 | 
            +
                        QUERY_BUILDER_SUPPORTED_FUNCTIONS.RELATION_GROUP_BY,
         | 
| 165 | 
            +
                      ])
         | 
| 166 166 | 
             
                    ) {
         | 
| 167 167 | 
             
                      return V1_buildGroupByFunctionExpression(
         | 
| 168 168 | 
             
                        functionName,
         |