@finos/legend-query-builder 4.15.41 → 4.15.42

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/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /** @license @finos/legend-query-builder v4.15.41
1
+ /** @license @finos/legend-query-builder v4.15.42
2
2
  * Copyright (c) 2020-present, Goldman Sachs
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@finos/legend-query-builder",
3
- "version": "4.15.41",
3
+ "version": "4.15.42",
4
4
  "description": "Legend query builder core",
5
5
  "keywords": [
6
6
  "legend",
@@ -52,8 +52,8 @@
52
52
  "@finos/legend-shared": "workspace:*",
53
53
  "@finos/legend-storage": "workspace:*",
54
54
  "@testing-library/dom": "10.4.0",
55
- "@testing-library/react": "16.1.0",
56
- "@types/react": "19.0.7",
55
+ "@testing-library/react": "16.2.0",
56
+ "@types/react": "19.0.8",
57
57
  "@types/react-dom": "19.0.3",
58
58
  "chart.js": "4.4.7",
59
59
  "mathjs": "14.0.1",
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { V1_Lambda, RawLambda, TDSExecutionResult, V1_AppliedFunction, type GraphManagerState, type PureModel, type V1_ValueSpecification, type ParameterValue } from '@finos/legend-graph';
16
+ import { V1_Lambda, RawLambda, TDSExecutionResult, V1_AppliedFunction, type GraphManagerState, type V1_ValueSpecification, type ParameterValue } from '@finos/legend-graph';
17
17
  import { DataCubeEngine, DataCubeSource, type CompletionItem, DataCubeQuery } from '@finos/legend-data-cube';
18
18
  import { LogService, type PlainObject } from '@finos/legend-shared';
19
19
  declare class QueryBuilderDataCubeSource extends DataCubeSource {
@@ -29,16 +29,11 @@ export declare class QueryBuilderDataCubeEngine extends DataCubeEngine {
29
29
  readonly runtimePath: string | undefined;
30
30
  readonly parameters: object | undefined;
31
31
  constructor(selectQuery: RawLambda, parameterValues: ParameterValue[] | undefined, mappingPath: string | undefined, runtimePath: string | undefined, graphManagerState: GraphManagerState);
32
- get sourceLabel(): string;
33
- get graph(): PureModel;
34
- private getSourceFunctionExpression;
35
- generateInitialQuery(): Promise<DataCubeQuery>;
36
32
  processQuerySource(value: PlainObject): Promise<QueryBuilderDataCubeSource>;
37
- private buildRawLambdaFromValueSpec;
38
- getQueryTypeahead(code: string, baseQuery: V1_Lambda, source: DataCubeSource): Promise<CompletionItem[]>;
39
33
  parseValueSpecification(code: string, returnSourceInformation?: boolean): Promise<V1_ValueSpecification>;
40
34
  getValueSpecificationCode(value: V1_ValueSpecification, pretty?: boolean | undefined): Promise<string>;
41
- getRelationType(query: RawLambda): Promise<import("@finos/legend-graph").RelationTypeMetadata>;
35
+ getQueryTypeahead(code: string, baseQuery: V1_Lambda, source: DataCubeSource): Promise<CompletionItem[]>;
36
+ getQueryRelationReturnType(query: V1_Lambda, source: DataCubeSource): Promise<import("@finos/legend-graph").RelationTypeMetadata>;
42
37
  getQueryCodeRelationReturnType(code: string, baseQuery: V1_ValueSpecification, source: DataCubeSource): Promise<import("@finos/legend-graph").RelationTypeMetadata>;
43
38
  executeQuery(query: V1_Lambda, source: DataCubeSource): Promise<{
44
39
  result: TDSExecutionResult;
@@ -46,6 +41,10 @@ export declare class QueryBuilderDataCubeEngine extends DataCubeEngine {
46
41
  executedSQL: string;
47
42
  }>;
48
43
  buildExecutionContext(source: DataCubeSource): V1_AppliedFunction | undefined;
44
+ private buildRawLambdaFromValueSpec;
45
+ private getSourceFunctionExpression;
46
+ generateInitialQuery(): Promise<DataCubeQuery>;
47
+ getRelationType(query: RawLambda): Promise<import("@finos/legend-graph").RelationTypeMetadata>;
49
48
  }
50
49
  export {};
51
50
  //# sourceMappingURL=QueryBuilderDataCubeEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBuilderDataCubeEngine.d.ts","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,EAET,kBAAkB,EAClB,kBAAkB,EAKlB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EAGpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,cAAc,EACd,cAAc,EAGd,KAAK,cAAc,EAEnB,aAAa,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAGL,UAAU,EACV,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAE9B,cAAM,0BAA2B,SAAQ,cAAc;IACrD,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,qBAAa,0BAA2B,SAAQ,cAAc;IAC5D,QAAQ,CAAC,UAAU,aAAoB;IACvC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGtC,WAAW,EAAE,SAAS,EACtB,eAAe,EAAE,cAAc,EAAE,GAAG,SAAS,EAC7C,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,iBAAiB,EAAE,iBAAiB;IAYtC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,KAAK,IAAI,SAAS,CAErB;IAED,OAAO,CAAC,2BAA2B;IAmB7B,oBAAoB;IAmBpB,kBAAkB,CAAC,KAAK,EAAE,WAAW;IAe3C,OAAO,CAAC,2BAA2B;IAU7B,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,cAAc;IAmBT,uBAAuB,CACpC,IAAI,EAAE,MAAM,EACZ,uBAAuB,CAAC,EAAE,OAAO;IAWpB,yBAAyB,CACtC,KAAK,EAAE,qBAAqB,EAC5B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS;IAQxB,eAAe,CAAC,KAAK,EAAE,SAAS;IASvB,8BAA8B,CAC3C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,qBAAqB,EAChC,MAAM,EAAE,cAAc;IAYT,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc;;;;;IAgC3D,qBAAqB,CAC5B,MAAM,EAAE,cAAc,GACrB,kBAAkB,GAAG,SAAS;CAelC"}
1
+ {"version":3,"file":"QueryBuilderDataCubeEngine.d.ts","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,EAET,kBAAkB,EAClB,kBAAkB,EAKlB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EAGpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,cAAc,EACd,cAAc,EAGd,KAAK,cAAc,EAEnB,aAAa,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAGL,UAAU,EACV,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAE9B,cAAM,0BAA2B,SAAQ,cAAc;IACrD,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,qBAAa,0BAA2B,SAAQ,cAAc;IAC5D,QAAQ,CAAC,UAAU,aAAoB;IACvC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGtC,WAAW,EAAE,SAAS,EACtB,eAAe,EAAE,cAAc,EAAE,GAAG,SAAS,EAC7C,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,iBAAiB,EAAE,iBAAiB;IAYvB,kBAAkB,CAAC,KAAK,EAAE,WAAW;IAerC,uBAAuB,CACpC,IAAI,EAAE,MAAM,EACZ,uBAAuB,CAAC,EAAE,OAAO;IAWpB,yBAAyB,CACtC,KAAK,EAAE,qBAAqB,EAC5B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS;IAQf,iBAAiB,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,cAAc;IAmBT,0BAA0B,CACvC,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,cAAc;IAKT,8BAA8B,CAC3C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,qBAAqB,EAChC,MAAM,EAAE,cAAc;IAYT,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc;;;;;IAgC3D,qBAAqB,CAC5B,MAAM,EAAE,cAAc,GACrB,kBAAkB,GAAG,SAAS;IAkBjC,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,2BAA2B;IAmB7B,oBAAoB;IAmBpB,eAAe,CAAC,KAAK,EAAE,SAAS;CAQvC"}
@@ -37,40 +37,6 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
37
37
  this.parameterValues = parameterValues;
38
38
  this.parameters = selectQuery.parameters;
39
39
  }
40
- get sourceLabel() {
41
- return `Query Builder Report`;
42
- }
43
- get graph() {
44
- return this.graphState.graph;
45
- }
46
- getSourceFunctionExpression() {
47
- let srcFuncExp = V1_deserializeValueSpecification(this.graphState.graphManager.serializeRawValueSpecification(this.selectInitialQuery), []);
48
- // We could do a further check here to ensure the experssion is an applied funciton
49
- // this is because data cube expects an expression to be able to built further upon the queery
50
- if (srcFuncExp instanceof V1_Lambda &&
51
- srcFuncExp.body.length === 1 &&
52
- srcFuncExp.body[0]) {
53
- srcFuncExp = srcFuncExp.body[0];
54
- }
55
- return srcFuncExp;
56
- }
57
- async generateInitialQuery() {
58
- const srcFuncExp = this.getSourceFunctionExpression();
59
- const fromFuncExp = new V1_AppliedFunction();
60
- fromFuncExp.function = _functionName(SUPPORTED_FUNCTIONS.FROM);
61
- fromFuncExp.parameters = [srcFuncExp];
62
- if (this.mappingPath) {
63
- fromFuncExp.parameters.push(_elementPtr(this.mappingPath));
64
- }
65
- if (this.runtimePath) {
66
- fromFuncExp.parameters.push(_elementPtr(this.runtimePath));
67
- }
68
- const columns = (await this.getRelationType(this.selectInitialQuery))
69
- .columns;
70
- const query = new DataCubeQuery();
71
- query.query = `~[${columns.map((e) => `'${e.name}'`)}]->select()`;
72
- return query;
73
- }
74
40
  async processQuerySource(value) {
75
41
  // TODO: this is an abnormal usage of this method, this is the place
76
42
  // where we can enforce which source this engine supports, instead
@@ -83,9 +49,11 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
83
49
  source.query = srcFuncExp;
84
50
  return source;
85
51
  }
86
- buildRawLambdaFromValueSpec(query) {
87
- const json = guaranteeType(V1_deserializeRawValueSpecification(V1_serializeValueSpecification(query, [])), V1_RawLambda);
88
- return new RawLambda(json.parameters, json.body);
52
+ async parseValueSpecification(code, returnSourceInformation) {
53
+ return V1_deserializeValueSpecification(await this.graphState.graphManager.pureCodeToValueSpecification(code, returnSourceInformation), []);
54
+ }
55
+ async getValueSpecificationCode(value, pretty) {
56
+ return this.graphState.graphManager.valueSpecificationToPureCode(V1_serializeValueSpecification(value, []), pretty);
89
57
  }
90
58
  async getQueryTypeahead(code, baseQuery, source) {
91
59
  const lambda = this.buildRawLambdaFromValueSpec(baseQuery);
@@ -93,18 +61,11 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
93
61
  const offset = queryString.length;
94
62
  const codeBlock = queryString + code;
95
63
  const finalCode = codeBlock.substring(codeBlock.indexOf(LAMBDA_PIPE) + LAMBDA_PIPE.length, codeBlock.length);
96
- const result = await this.graphState.graphManager.getCodeComplete(finalCode, this.graph, offset);
64
+ const result = await this.graphState.graphManager.getCodeComplete(finalCode, this.graphState.graph, offset);
97
65
  return result.completions;
98
66
  }
99
- async parseValueSpecification(code, returnSourceInformation) {
100
- return V1_deserializeValueSpecification(await this.graphState.graphManager.pureCodeToValueSpecification(code, returnSourceInformation), []);
101
- }
102
- async getValueSpecificationCode(value, pretty) {
103
- return this.graphState.graphManager.valueSpecificationToPureCode(V1_serializeValueSpecification(value, []), pretty);
104
- }
105
- async getRelationType(query) {
106
- const relationType = await this.graphState.graphManager.getLambdaRelationType(query, this.graph);
107
- return relationType;
67
+ async getQueryRelationReturnType(query, source) {
68
+ return this.getRelationType(this.buildRawLambdaFromValueSpec(query));
108
69
  }
109
70
  async getQueryCodeRelationReturnType(code, baseQuery, source) {
110
71
  const queryString = await this.graphState.graphManager.valueSpecificationToPureCode(V1_serializeValueSpecification(baseQuery, []));
@@ -115,7 +76,7 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
115
76
  const lambda = this.buildRawLambdaFromValueSpec(query);
116
77
  lambda.parameters = this.parameters;
117
78
  const [executionWithMetadata, queryString] = await Promise.all([
118
- this.graphState.graphManager.runQuery(lambda, undefined, undefined, this.graph, {
79
+ this.graphState.graphManager.runQuery(lambda, undefined, undefined, this.graphState.graph, {
119
80
  parameterValues: this.parameterValues ?? [],
120
81
  }),
121
82
  this.graphState.graphManager.lambdaToPureCode(lambda),
@@ -144,5 +105,42 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
144
105
  }
145
106
  return undefined;
146
107
  }
108
+ // ---------------------------------- UTILITIES ----------------------------------
109
+ buildRawLambdaFromValueSpec(query) {
110
+ const json = guaranteeType(V1_deserializeRawValueSpecification(V1_serializeValueSpecification(query, [])), V1_RawLambda);
111
+ return new RawLambda(json.parameters, json.body);
112
+ }
113
+ getSourceFunctionExpression() {
114
+ let srcFuncExp = V1_deserializeValueSpecification(this.graphState.graphManager.serializeRawValueSpecification(this.selectInitialQuery), []);
115
+ // We could do a further check here to ensure the experssion is an applied funciton
116
+ // this is because data cube expects an expression to be able to built further upon the queery
117
+ if (srcFuncExp instanceof V1_Lambda &&
118
+ srcFuncExp.body.length === 1 &&
119
+ srcFuncExp.body[0]) {
120
+ srcFuncExp = srcFuncExp.body[0];
121
+ }
122
+ return srcFuncExp;
123
+ }
124
+ async generateInitialQuery() {
125
+ const srcFuncExp = this.getSourceFunctionExpression();
126
+ const fromFuncExp = new V1_AppliedFunction();
127
+ fromFuncExp.function = _functionName(SUPPORTED_FUNCTIONS.FROM);
128
+ fromFuncExp.parameters = [srcFuncExp];
129
+ if (this.mappingPath) {
130
+ fromFuncExp.parameters.push(_elementPtr(this.mappingPath));
131
+ }
132
+ if (this.runtimePath) {
133
+ fromFuncExp.parameters.push(_elementPtr(this.runtimePath));
134
+ }
135
+ const columns = (await this.getRelationType(this.selectInitialQuery))
136
+ .columns;
137
+ const query = new DataCubeQuery();
138
+ query.query = `~[${columns.map((e) => `'${e.name}'`)}]->select()`;
139
+ return query;
140
+ }
141
+ async getRelationType(query) {
142
+ const relationType = await this.graphState.graphManager.getLambdaRelationType(query, this.graphState.graph);
143
+ return relationType;
144
+ }
147
145
  }
148
146
  //# sourceMappingURL=QueryBuilderDataCubeEngine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBuilderDataCubeEngine.js","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryBuilderDataCubeEngine.js","sourceRoot":"","sources":["../../../src/stores/data-cube/QueryBuilderDataCubeEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,EACT,6BAA6B,EAC7B,kBAAkB,EAClB,kBAAkB,EAClB,mCAAmC,EACnC,gCAAgC,EAChC,YAAY,EACZ,8BAA8B,EAI9B,WAAW,EACX,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,WAAW,EACX,cAAc,EACd,cAAc,EACd,SAAS,EACT,gBAAgB,EAEhB,aAAa,EACb,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,aAAa,EACb,aAAa,EACb,UAAU,GAEX,MAAM,sBAAsB,CAAC;AAE9B,MAAM,0BAA2B,SAAQ,cAAc;IACrD,OAAO,CAAsB;IAC7B,OAAO,CAAqB;CAC7B;AAED,MAAM,OAAO,0BAA2B,SAAQ,cAAc;IACnD,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAC9B,UAAU,CAAoB;IAC9B,kBAAkB,CAAY;IAC9B,WAAW,CAAqB;IAChC,eAAe,CAA+B;IAC9C,WAAW,CAAqB;IAChC,UAAU,CAAqB;IAExC,YACE,WAAsB,EACtB,eAA6C,EAC7C,WAA+B,EAC/B,WAA+B,EAC/B,iBAAoC;QAEpC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC;QACpC,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;IAC3C,CAAC;IAEQ,KAAK,CAAC,kBAAkB,CAAC,KAAkB;QAClD,oEAAoE;QACpE,kEAAkE;QAClE,qCAAqC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAChD,MAAM,CAAC,OAAO,GAAG,CACf,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CACpD,CAAC,OAAO,CAAC;QACV,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QAClC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QAClC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAEQ,KAAK,CAAC,uBAAuB,CACpC,IAAY,EACZ,uBAAiC;QAEjC,OAAO,gCAAgC,CACrC,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,4BAA4B,CAC7D,IAAI,EACJ,uBAAuB,CACxB,EACD,EAAE,CACH,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,yBAAyB,CACtC,KAA4B,EAC5B,MAA4B;QAE5B,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,4BAA4B,CAC9D,8BAA8B,CAAC,KAAK,EAAE,EAAE,CAAC,EACzC,MAAM,CACP,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,iBAAiB,CAC9B,IAAY,EACZ,SAAoB,EACpB,MAAsB;QAEtB,MAAM,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,WAAW,GACf,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;QAClC,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC;QACrC,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CACnC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM,EACnD,SAAS,CAAC,MAAM,CACjB,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,eAAe,CAC/D,SAAS,EACT,IAAI,CAAC,UAAU,CAAC,KAAK,EACrB,MAAM,CACP,CAAC;QACF,OAAO,MAAM,CAAC,WAA+B,CAAC;IAChD,CAAC;IAEQ,KAAK,CAAC,0BAA0B,CACvC,KAAgB,EAChB,MAAsB;QAEtB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAEQ,KAAK,CAAC,8BAA8B,CAC3C,IAAY,EACZ,SAAgC,EAChC,MAAsB;QAEtB,MAAM,WAAW,GACf,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,4BAA4B,CAC7D,8BAA8B,CAAC,SAAS,EAAE,EAAE,CAAC,CAC9C,CAAC;QACJ,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC;QACrC,OAAO,IAAI,CAAC,eAAe,CACzB,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAC/D,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,YAAY,CAAC,KAAgB,EAAE,MAAsB;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACpC,MAAM,CAAC,qBAAqB,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CACnC,MAAM,EACN,SAAS,EACT,SAAS,EACT,IAAI,CAAC,UAAU,CAAC,KAAK,EACrB;gBACE,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE;aAC5C,CACF;YACD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC;SACtD,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,aAAa,CAC/B,qBAAqB,CAAC,eAAe,EACrC,kBAAkB,EAClB,mDAAmD,CACpD,CAAC;QACF,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,SAAS,GAAG,kBAAkB,CAAC;QACnC,IAAI,GAAG,YAAY,6BAA6B,EAAE,CAAC;YACjD,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC;QACtB,CAAC;QACD,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,aAAa,EAAE,WAAW;YAC1B,WAAW,EAAE,SAAS;SACvB,CAAC;IACJ,CAAC;IAEQ,qBAAqB,CAC5B,MAAsB;QAEtB,IAAI,MAAM,YAAY,0BAA0B,EAAE,CAAC;YACjD,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;YACjE,OAAO,cAAc;gBACnB,CAAC,CAAC,SAAS,CACP,gBAAgB,CAAC,IAAI,EACrB;oBACE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;oBACxD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;iBACzD,CAAC,MAAM,CAAC,aAAa,CAAC,CACxB;gBACH,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,kFAAkF;IAE1E,2BAA2B,CAAC,KAAgB;QAClD,MAAM,IAAI,GAAG,aAAa,CACxB,mCAAmC,CACjC,8BAA8B,CAAC,KAAK,EAAE,EAAE,CAAC,CAC1C,EACD,YAAY,CACb,CAAC;QACF,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAEO,2BAA2B;QACjC,IAAI,UAAU,GAAG,gCAAgC,CAC/C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,8BAA8B,CACzD,IAAI,CAAC,kBAAkB,CACxB,EACD,EAAE,CACH,CAAC;QACF,mFAAmF;QACnF,8FAA8F;QAC9F,IACE,UAAU,YAAY,SAAS;YAC/B,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAClB,CAAC;YACD,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC7C,WAAW,CAAC,QAAQ,GAAG,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/D,WAAW,CAAC,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;aAClE,OAAO,CAAC;QACX,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;QAClC,KAAK,CAAC,KAAK,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC;QAElE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAgB;QACpC,MAAM,YAAY,GAChB,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,qBAAqB,CACtD,KAAK,EACL,IAAI,CAAC,UAAU,CAAC,KAAK,CACtB,CAAC;QACJ,OAAO,YAAY,CAAC;IACtB,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@finos/legend-query-builder",
3
- "version": "4.15.41",
3
+ "version": "4.15.42",
4
4
  "description": "Legend query builder core",
5
5
  "keywords": [
6
6
  "legend",
@@ -42,18 +42,18 @@
42
42
  "test:watch": "jest --watch"
43
43
  },
44
44
  "dependencies": {
45
- "@finos/legend-application": "16.0.20",
46
- "@finos/legend-art": "7.1.77",
47
- "@finos/legend-code-editor": "2.0.36",
48
- "@finos/legend-data-cube": "0.0.43",
49
- "@finos/legend-graph": "32.0.4",
50
- "@finos/legend-lego": "2.0.39",
45
+ "@finos/legend-application": "16.0.21",
46
+ "@finos/legend-art": "7.1.78",
47
+ "@finos/legend-code-editor": "2.0.37",
48
+ "@finos/legend-data-cube": "0.0.44",
49
+ "@finos/legend-graph": "32.0.5",
50
+ "@finos/legend-lego": "2.0.40",
51
51
  "@finos/legend-server-depot": "6.0.77",
52
52
  "@finos/legend-shared": "11.0.0",
53
53
  "@finos/legend-storage": "3.0.119",
54
54
  "@testing-library/dom": "10.4.0",
55
- "@testing-library/react": "16.1.0",
56
- "@types/react": "19.0.7",
55
+ "@testing-library/react": "16.2.0",
56
+ "@types/react": "19.0.8",
57
57
  "@types/react-dom": "19.0.3",
58
58
  "chart.js": "4.4.7",
59
59
  "mathjs": "14.0.1",
@@ -25,7 +25,6 @@ import {
25
25
  V1_RawLambda,
26
26
  V1_serializeValueSpecification,
27
27
  type GraphManagerState,
28
- type PureModel,
29
28
  type V1_ValueSpecification,
30
29
  type ParameterValue,
31
30
  LAMBDA_PIPE,
@@ -79,53 +78,7 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
79
78
  this.parameters = selectQuery.parameters;
80
79
  }
81
80
 
82
- get sourceLabel(): string {
83
- return `Query Builder Report`;
84
- }
85
-
86
- get graph(): PureModel {
87
- return this.graphState.graph;
88
- }
89
-
90
- private getSourceFunctionExpression() {
91
- let srcFuncExp = V1_deserializeValueSpecification(
92
- this.graphState.graphManager.serializeRawValueSpecification(
93
- this.selectInitialQuery,
94
- ),
95
- [],
96
- );
97
- // We could do a further check here to ensure the experssion is an applied funciton
98
- // this is because data cube expects an expression to be able to built further upon the queery
99
- if (
100
- srcFuncExp instanceof V1_Lambda &&
101
- srcFuncExp.body.length === 1 &&
102
- srcFuncExp.body[0]
103
- ) {
104
- srcFuncExp = srcFuncExp.body[0];
105
- }
106
- return srcFuncExp;
107
- }
108
-
109
- async generateInitialQuery() {
110
- const srcFuncExp = this.getSourceFunctionExpression();
111
- const fromFuncExp = new V1_AppliedFunction();
112
- fromFuncExp.function = _functionName(SUPPORTED_FUNCTIONS.FROM);
113
- fromFuncExp.parameters = [srcFuncExp];
114
- if (this.mappingPath) {
115
- fromFuncExp.parameters.push(_elementPtr(this.mappingPath));
116
- }
117
- if (this.runtimePath) {
118
- fromFuncExp.parameters.push(_elementPtr(this.runtimePath));
119
- }
120
- const columns = (await this.getRelationType(this.selectInitialQuery))
121
- .columns;
122
- const query = new DataCubeQuery();
123
- query.query = `~[${columns.map((e) => `'${e.name}'`)}]->select()`;
124
-
125
- return query;
126
- }
127
-
128
- async processQuerySource(value: PlainObject) {
81
+ override async processQuerySource(value: PlainObject) {
129
82
  // TODO: this is an abnormal usage of this method, this is the place
130
83
  // where we can enforce which source this engine supports, instead
131
84
  // of hardcoding the logic like this.
@@ -140,17 +93,30 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
140
93
  return source;
141
94
  }
142
95
 
143
- private buildRawLambdaFromValueSpec(query: V1_Lambda): RawLambda {
144
- const json = guaranteeType(
145
- V1_deserializeRawValueSpecification(
146
- V1_serializeValueSpecification(query, []),
96
+ override async parseValueSpecification(
97
+ code: string,
98
+ returnSourceInformation?: boolean,
99
+ ) {
100
+ return V1_deserializeValueSpecification(
101
+ await this.graphState.graphManager.pureCodeToValueSpecification(
102
+ code,
103
+ returnSourceInformation,
147
104
  ),
148
- V1_RawLambda,
105
+ [],
106
+ );
107
+ }
108
+
109
+ override async getValueSpecificationCode(
110
+ value: V1_ValueSpecification,
111
+ pretty?: boolean | undefined,
112
+ ) {
113
+ return this.graphState.graphManager.valueSpecificationToPureCode(
114
+ V1_serializeValueSpecification(value, []),
115
+ pretty,
149
116
  );
150
- return new RawLambda(json.parameters, json.body);
151
117
  }
152
118
 
153
- async getQueryTypeahead(
119
+ override async getQueryTypeahead(
154
120
  code: string,
155
121
  baseQuery: V1_Lambda,
156
122
  source: DataCubeSource,
@@ -166,42 +132,17 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
166
132
  );
167
133
  const result = await this.graphState.graphManager.getCodeComplete(
168
134
  finalCode,
169
- this.graph,
135
+ this.graphState.graph,
170
136
  offset,
171
137
  );
172
138
  return result.completions as CompletionItem[];
173
139
  }
174
140
 
175
- override async parseValueSpecification(
176
- code: string,
177
- returnSourceInformation?: boolean,
178
- ) {
179
- return V1_deserializeValueSpecification(
180
- await this.graphState.graphManager.pureCodeToValueSpecification(
181
- code,
182
- returnSourceInformation,
183
- ),
184
- [],
185
- );
186
- }
187
-
188
- override async getValueSpecificationCode(
189
- value: V1_ValueSpecification,
190
- pretty?: boolean | undefined,
141
+ override async getQueryRelationReturnType(
142
+ query: V1_Lambda,
143
+ source: DataCubeSource,
191
144
  ) {
192
- return this.graphState.graphManager.valueSpecificationToPureCode(
193
- V1_serializeValueSpecification(value, []),
194
- pretty,
195
- );
196
- }
197
-
198
- async getRelationType(query: RawLambda) {
199
- const relationType =
200
- await this.graphState.graphManager.getLambdaRelationType(
201
- query,
202
- this.graph,
203
- );
204
- return relationType;
145
+ return this.getRelationType(this.buildRawLambdaFromValueSpec(query));
205
146
  }
206
147
 
207
148
  override async getQueryCodeRelationReturnType(
@@ -227,7 +168,7 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
227
168
  lambda,
228
169
  undefined,
229
170
  undefined,
230
- this.graph,
171
+ this.graphState.graph,
231
172
  {
232
173
  parameterValues: this.parameterValues ?? [],
233
174
  },
@@ -268,4 +209,63 @@ export class QueryBuilderDataCubeEngine extends DataCubeEngine {
268
209
  }
269
210
  return undefined;
270
211
  }
212
+
213
+ // ---------------------------------- UTILITIES ----------------------------------
214
+
215
+ private buildRawLambdaFromValueSpec(query: V1_Lambda): RawLambda {
216
+ const json = guaranteeType(
217
+ V1_deserializeRawValueSpecification(
218
+ V1_serializeValueSpecification(query, []),
219
+ ),
220
+ V1_RawLambda,
221
+ );
222
+ return new RawLambda(json.parameters, json.body);
223
+ }
224
+
225
+ private getSourceFunctionExpression() {
226
+ let srcFuncExp = V1_deserializeValueSpecification(
227
+ this.graphState.graphManager.serializeRawValueSpecification(
228
+ this.selectInitialQuery,
229
+ ),
230
+ [],
231
+ );
232
+ // We could do a further check here to ensure the experssion is an applied funciton
233
+ // this is because data cube expects an expression to be able to built further upon the queery
234
+ if (
235
+ srcFuncExp instanceof V1_Lambda &&
236
+ srcFuncExp.body.length === 1 &&
237
+ srcFuncExp.body[0]
238
+ ) {
239
+ srcFuncExp = srcFuncExp.body[0];
240
+ }
241
+ return srcFuncExp;
242
+ }
243
+
244
+ async generateInitialQuery() {
245
+ const srcFuncExp = this.getSourceFunctionExpression();
246
+ const fromFuncExp = new V1_AppliedFunction();
247
+ fromFuncExp.function = _functionName(SUPPORTED_FUNCTIONS.FROM);
248
+ fromFuncExp.parameters = [srcFuncExp];
249
+ if (this.mappingPath) {
250
+ fromFuncExp.parameters.push(_elementPtr(this.mappingPath));
251
+ }
252
+ if (this.runtimePath) {
253
+ fromFuncExp.parameters.push(_elementPtr(this.runtimePath));
254
+ }
255
+ const columns = (await this.getRelationType(this.selectInitialQuery))
256
+ .columns;
257
+ const query = new DataCubeQuery();
258
+ query.query = `~[${columns.map((e) => `'${e.name}'`)}]->select()`;
259
+
260
+ return query;
261
+ }
262
+
263
+ async getRelationType(query: RawLambda) {
264
+ const relationType =
265
+ await this.graphState.graphManager.getLambdaRelationType(
266
+ query,
267
+ this.graphState.graph,
268
+ );
269
+ return relationType;
270
+ }
271
271
  }