@finos/legend-application-query 13.8.62 → 13.8.63

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-application-query v13.8.62
1
+ /** @license @finos/legend-application-query v13.8.63
2
2
  * Copyright (c) 2020-present, Goldman Sachs
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,4 +1,4 @@
1
- /** @license @finos/legend-application-query v13.8.62
1
+ /** @license @finos/legend-application-query v13.8.63
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-application-query",
3
- "version": "13.8.62",
3
+ "version": "13.8.63",
4
4
  "description": "Legend Query application core",
5
5
  "keywords": [
6
6
  "legend",
@@ -55,7 +55,6 @@
55
55
  "@finos/legend-query-builder": "workspace:*",
56
56
  "@finos/legend-server-depot": "workspace:*",
57
57
  "@finos/legend-server-lakehouse": "workspace:*",
58
- "@finos/legend-server-marketplace": "workspace:*",
59
58
  "@finos/legend-shared": "workspace:*",
60
59
  "@finos/legend-storage": "workspace:*",
61
60
  "@testing-library/dom": "10.4.0",
@@ -13,37 +13,29 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { CubeEngineClientSettings, type CubeConnectionExplorer, type CubeDataProductCatalog, type CubeEngine, type CubeIngestCatalog, type CubeLakehouseServices, type CubeProjectCatalog, type CubeServiceCatalog, type CubeEngineConfig, type CubeHost, LocalModelCatalog } from '@finos/legend-cube-builder';
16
+ import { LegendCubeHost, type CubeConnectionExplorer, type CubeEngine, type CubeEngineConfig, type CubeLakehouseServices, type CubeProjectCatalog, type LegendCubeHostConfig } from '@finos/legend-cube-builder';
17
17
  import type { LegendQueryApplicationConfig } from '../../application/LegendQueryApplicationConfig.js';
18
18
  import type { LegendQueryApplicationStore } from '../LegendQueryBaseStore.js';
19
19
  /** Cube talks to the engine Query's own editor uses, configured the same way */
20
20
  export declare const buildLegendQueryCubeEngineConfig: (config: LegendQueryApplicationConfig) => CubeEngineConfig;
21
+ /**
22
+ * Query's servers, as Cube's host reads them (PLAN §11.18): Query's engine,
23
+ * depot, lakehouse and marketplace, configured as Query's own, and the
24
+ * lakehouse environment Query remembers for the viewer
25
+ */
26
+ export declare const buildLegendQueryCubeHostConfig: (applicationStore: LegendQueryApplicationStore) => LegendCubeHostConfig;
21
27
  /**
22
28
  * What Cube needs to read and run data products (PLAN §6.8), with Query's
23
- * lakehouse and depot, configured as Query's own: none when Query has no
24
- * lakehouse, so an open-source deployment without one offers no data
25
- * products. With a marketplace server too, its search is used
29
+ * lakehouse and depot: none when Query has no lakehouse, so an open-source
30
+ * deployment without one offers no data products
26
31
  */
27
32
  export declare const buildLegendQueryCubeLakehouseServices: (applicationStore: LegendQueryApplicationStore) => CubeLakehouseServices | undefined;
28
- /** The published projects in Query's depot, or none without a depot */
29
- export declare const buildLegendQueryCubeProjectCatalog: (applicationStore: LegendQueryApplicationStore) => CubeProjectCatalog | undefined;
30
33
  /**
31
- * Legend Query as the host of the Cube page (PLAN §3.5): Query's engine and
32
- * application store, the bundled models, direct database connections read
33
- * through Query's engine, and, when Query has a lakehouse, its deployed data
34
- * products (PLAN §6.8). One per visit to the page.
34
+ * Legend Query as the host of the Cube page (PLAN §3.5): the host a Legend
35
+ * deployment gives Cube (PLAN §11.18), from Query's config. One per visit to
36
+ * the page.
35
37
  */
36
- export declare class LegendQueryCubeHost implements CubeHost {
37
- readonly applicationStore: LegendQueryApplicationStore;
38
- readonly engine: CubeEngine;
39
- readonly modelCatalog: LocalModelCatalog;
40
- readonly connectionExplorer: CubeConnectionExplorer;
41
- readonly dataProductCatalog: CubeDataProductCatalog | undefined;
42
- readonly ingestCatalog: CubeIngestCatalog | undefined;
43
- readonly projectCatalog: CubeProjectCatalog | undefined;
44
- readonly serviceCatalog: CubeServiceCatalog;
45
- /** The engine URL and compression Cube's engine clients share, which Dev Settings changes */
46
- readonly engineClientSettings: CubeEngineClientSettings;
38
+ export declare class LegendQueryCubeHost extends LegendCubeHost {
47
39
  /**
48
40
  * Tests give an engine, an explorer and a project catalog; otherwise each
49
41
  * is built from Query's config
@@ -1 +1 @@
1
- {"version":3,"file":"LegendQueryCubeHost.d.ts","sourceRoot":"","sources":["../../../src/stores/cube/LegendQueryCubeHost.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EASL,wBAAwB,EAExB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AAUpC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACtG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAE9E,gFAAgF;AAChF,eAAO,MAAM,gCAAgC,GAC3C,QAAQ,4BAA4B,KACnC,gBAMD,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,qCAAqC,GAChD,kBAAkB,2BAA2B,KAC5C,qBAAqB,GAAG,SAwE1B,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,kCAAkC,GAC7C,kBAAkB,2BAA2B,KAC5C,kBAAkB,GAAG,SAUvB,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,QAAQ;IAClD,QAAQ,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;IACpD,QAAQ,CAAC,kBAAkB,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAChE,QAAQ,CAAC,aAAa,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,cAAc,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC5C,6FAA6F;IAC7F,QAAQ,CAAC,oBAAoB,EAAE,wBAAwB,CAAC;IAExD;;;OAGG;gBAED,gBAAgB,EAAE,2BAA2B,EAC7C,MAAM,CAAC,EAAE,UAAU,EACnB,kBAAkB,CAAC,EAAE,sBAAsB,EAC3C,cAAc,CAAC,EAAE,kBAAkB;CAiDtC"}
1
+ {"version":3,"file":"LegendQueryCubeHost.d.ts","sourceRoot":"","sources":["../../../src/stores/cube/LegendQueryCubeHost.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACtG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAE9E,gFAAgF;AAChF,eAAO,MAAM,gCAAgC,GAC3C,QAAQ,4BAA4B,KACnC,gBAMD,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,GACzC,kBAAkB,2BAA2B,KAC5C,oBAyBF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qCAAqC,GAChD,kBAAkB,2BAA2B,KAC5C,qBAAqB,GAAG,SAIxB,CAAC;AAEJ;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,cAAc;IACrD;;;OAGG;gBAED,gBAAgB,EAAE,2BAA2B,EAC7C,MAAM,CAAC,EAAE,UAAU,EACnB,kBAAkB,CAAC,EAAE,sBAAsB,EAC3C,cAAc,CAAC,EAAE,kBAAkB;CAQtC"}
@@ -13,11 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { buildCubeConnectionExplorer, buildCubeDataProductCatalog, buildCubeEngine, buildCubeIngestCatalog, buildCubeLakehouseEnvironment, buildCubeProjectCatalog, buildCubeServiceCatalog, CubeDataProductEnvironmentType, CubeEngineClientSettings, getCubeRememberedWarehouse, LocalModelCatalog, } from '@finos/legend-cube-builder';
17
- import { DepotServerClient } from '@finos/legend-server-depot';
18
- import { LakehouseContractServerClient, LakehouseIngestServerClient, LakehousePlatformServerClient, } from '@finos/legend-server-lakehouse';
19
- import { MarketplaceServerClient } from '@finos/legend-server-marketplace';
20
- import { EXTERNAL_APPLICATION_NAVIGATION__generateMarketplaceDataProductUrl } from '../../__lib__/LegendQueryNavigation.js';
16
+ import { buildLegendCubeLakehouseServices, LegendCubeHost, } from '@finos/legend-cube-builder';
21
17
  import { LegendQueryUserDataHelper } from '../../__lib__/LegendQueryUserDataHelper.js';
22
18
  /** Cube talks to the engine Query's own editor uses, configured the same way */
23
19
  export const buildLegendQueryCubeEngineConfig = (config) => ({
@@ -28,53 +24,22 @@ export const buildLegendQueryCubeEngineConfig = (config) => ({
28
24
  useCookieAuthOnly: config.engineUseCookieAuthOnly,
29
25
  });
30
26
  /**
31
- * What Cube needs to read and run data products (PLAN §6.8), with Query's
32
- * lakehouse and depot, configured as Query's own: none when Query has no
33
- * lakehouse, so an open-source deployment without one offers no data
34
- * products. With a marketplace server too, its search is used
27
+ * Query's servers, as Cube's host reads them (PLAN §11.18): Query's engine,
28
+ * depot, lakehouse and marketplace, configured as Query's own, and the
29
+ * lakehouse environment Query remembers for the viewer
35
30
  */
36
- export const buildLegendQueryCubeLakehouseServices = (applicationStore) => {
37
- const { config, tracerService } = applicationStore;
38
- if (!config.lakehouseContractUrl || !config.depotServerUrl) {
39
- return undefined;
40
- }
41
- const contractServerClient = new LakehouseContractServerClient({
42
- baseUrl: config.lakehouseContractUrl,
43
- });
44
- contractServerClient.setTracerService(tracerService);
45
- const depotServerClient = new DepotServerClient({
46
- serverUrl: config.depotServerUrl,
47
- });
48
- depotServerClient.setTracerService(tracerService);
49
- let marketplaceServerClient;
50
- if (config.marketplaceServerUrl) {
51
- marketplaceServerClient = new MarketplaceServerClient({
52
- serverUrl: config.marketplaceServerUrl,
53
- // the client only stores it, never reading it, and Cube calls no subscription route
54
- subscriptionUrl: '',
55
- });
56
- marketplaceServerClient.setTracerService(tracerService);
57
- }
58
- // ingest data sets need the platform, which names the ingest servers; the
59
- // ingest client has no server of its own: each call names one
60
- let platformServerClient;
61
- let ingestServerClient;
62
- if (config.lakehousePlatformUrl) {
63
- platformServerClient = new LakehousePlatformServerClient(config.lakehousePlatformUrl);
64
- platformServerClient.setTracerService(tracerService);
65
- ingestServerClient = new LakehouseIngestServerClient(undefined);
66
- ingestServerClient.setTracerService(tracerService);
67
- }
31
+ export const buildLegendQueryCubeHostConfig = (applicationStore) => {
32
+ const { config } = applicationStore;
68
33
  return {
69
- platformServerClient,
70
- ingestServerClient,
71
- contractServerClient,
72
- depotServerClient,
73
- marketplaceServerClient,
74
- getAccessToken: () => applicationStore.getAccessToken(),
75
- getCurrentUser: () => applicationStore.identityService.currentUser,
76
- // the environment Query remembers for the viewer, as Query's editor uses it
77
- getPreferredEnvironment: () => LegendQueryUserDataHelper.getLakehouseUserInfo(applicationStore.userDataService)?.env,
34
+ engine: buildLegendQueryCubeEngineConfig(config),
35
+ depotServerUrl: config.depotServerUrl,
36
+ lakehouseContractUrl: config.lakehouseContractUrl,
37
+ lakehousePlatformUrl: config.lakehousePlatformUrl,
38
+ marketplaceServerUrl: config.marketplaceServerUrl,
39
+ // a data product links to the marketplace of its deployment's class;
40
+ // Query's own links choose by a SNAPSHOT version instead
41
+ marketplaceApplicationUrl: config.marketplaceApplicationUrl,
42
+ marketplaceProductionParallelUrl: config.marketplaceProductionParallelUrl,
78
43
  // the stereotype Studio and Marketplace mark groups open to everyone with
79
44
  enterpriseStereotype: config.options.dataProductConfig?.publicStereotype
80
45
  ? {
@@ -82,85 +47,32 @@ export const buildLegendQueryCubeLakehouseServices = (applicationStore) => {
82
47
  value: config.options.dataProductConfig.publicStereotype.stereotype,
83
48
  }
84
49
  : undefined,
85
- // the marketplace of the deployment's class, where its deployment is;
86
- // Query's own links choose by a SNAPSHOT version instead
87
- getMarketplaceLink: (target) => {
88
- const marketplaceUrl = target.environmentType ===
89
- CubeDataProductEnvironmentType.PRODUCTION_PARALLEL
90
- ? config.marketplaceProductionParallelUrl
91
- : config.marketplaceApplicationUrl;
92
- return marketplaceUrl
93
- ? EXTERNAL_APPLICATION_NAVIGATION__generateMarketplaceDataProductUrl(marketplaceUrl, target.dataProductId, target.deploymentId, target.accessPointGroup)
94
- : undefined;
95
- },
50
+ // the environment Query remembers for the viewer, as Query's editor uses it
51
+ getPreferredEnvironment: () => LegendQueryUserDataHelper.getLakehouseUserInfo(applicationStore.userDataService)?.env,
96
52
  };
97
53
  };
98
- /** The published projects in Query's depot, or none without a depot */
99
- export const buildLegendQueryCubeProjectCatalog = (applicationStore) => {
100
- const { config, tracerService } = applicationStore;
101
- if (!config.depotServerUrl) {
102
- return undefined;
103
- }
104
- const depotServerClient = new DepotServerClient({
105
- serverUrl: config.depotServerUrl,
106
- });
107
- depotServerClient.setTracerService(tracerService);
108
- return buildCubeProjectCatalog(depotServerClient);
109
- };
110
54
  /**
111
- * Legend Query as the host of the Cube page (PLAN §3.5): Query's engine and
112
- * application store, the bundled models, direct database connections read
113
- * through Query's engine, and, when Query has a lakehouse, its deployed data
114
- * products (PLAN §6.8). One per visit to the page.
55
+ * What Cube needs to read and run data products (PLAN §6.8), with Query's
56
+ * lakehouse and depot: none when Query has no lakehouse, so an open-source
57
+ * deployment without one offers no data products
58
+ */
59
+ export const buildLegendQueryCubeLakehouseServices = (applicationStore) => buildLegendCubeLakehouseServices(applicationStore, buildLegendQueryCubeHostConfig(applicationStore));
60
+ /**
61
+ * Legend Query as the host of the Cube page (PLAN §3.5): the host a Legend
62
+ * deployment gives Cube (PLAN §11.18), from Query's config. One per visit to
63
+ * the page.
115
64
  */
116
- export class LegendQueryCubeHost {
117
- applicationStore;
118
- engine;
119
- modelCatalog;
120
- connectionExplorer;
121
- dataProductCatalog;
122
- ingestCatalog;
123
- projectCatalog;
124
- serviceCatalog;
125
- /** The engine URL and compression Cube's engine clients share, which Dev Settings changes */
126
- engineClientSettings;
65
+ export class LegendQueryCubeHost extends LegendCubeHost {
127
66
  /**
128
67
  * Tests give an engine, an explorer and a project catalog; otherwise each
129
68
  * is built from Query's config
130
69
  */
131
70
  constructor(applicationStore, engine, connectionExplorer, projectCatalog) {
132
- this.applicationStore = applicationStore;
133
- const config = buildLegendQueryCubeEngineConfig(applicationStore.config);
134
- this.engineClientSettings = new CubeEngineClientSettings(config);
135
- const lakehouse = buildLegendQueryCubeLakehouseServices(applicationStore);
136
- this.ingestCatalog = lakehouse
137
- ? buildCubeIngestCatalog(config, applicationStore.tracerService, lakehouse, this.engineClientSettings)
138
- : undefined;
139
- this.engine =
140
- engine ??
141
- buildCubeEngine(config, applicationStore.tracerService, {
142
- ingestCatalog: this.ingestCatalog,
143
- lakehouseEnvironment: lakehouse
144
- ? buildCubeLakehouseEnvironment(lakehouse)
145
- : undefined,
146
- getRememberedWarehouse: () => getCubeRememberedWarehouse(applicationStore.userDataService),
147
- clientSettings: this.engineClientSettings,
148
- });
149
- this.dataProductCatalog = lakehouse
150
- ? buildCubeDataProductCatalog(lakehouse)
151
- : undefined;
152
- this.modelCatalog = new LocalModelCatalog(this.engine);
153
- // its own client, configured as the engine's
154
- this.connectionExplorer =
155
- connectionExplorer ??
156
- buildCubeConnectionExplorer(config, applicationStore.tracerService, this.engineClientSettings);
157
- // the published projects in Query's depot (PLAN §6.3); it reads nothing
158
- // until the source dialog's Project tab opens
159
- this.projectCatalog =
160
- projectCatalog ?? buildLegendQueryCubeProjectCatalog(applicationStore);
161
- // the services in the registry of Query's engine (PLAN §6.4), in
162
- // progress; it reads nothing until the source dialog's Service tab opens
163
- this.serviceCatalog = buildCubeServiceCatalog(config, applicationStore.tracerService, this.engineClientSettings);
71
+ super(applicationStore, buildLegendQueryCubeHostConfig(applicationStore), {
72
+ engine,
73
+ connectionExplorer,
74
+ projectCatalog,
75
+ });
164
76
  }
165
77
  }
166
78
  //# sourceMappingURL=LegendQueryCubeHost.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LegendQueryCubeHost.js","sourceRoot":"","sources":["../../../src/stores/cube/LegendQueryCubeHost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LegendQueryCubeHost.js","sourceRoot":"","sources":["../../../src/stores/cube/LegendQueryCubeHost.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,gCAAgC,EAChC,cAAc,GAOf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAIvF,gFAAgF;AAChF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,MAAoC,EAClB,EAAE,CAAC,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,eAAe;IAC/B,YAAY,EAAE,MAAM,CAAC,oBAAoB;IACzC,eAAe,EAAE,MAAM,CAAC,qBAAqB;IAC7C,iBAAiB,EAAE,IAAI;IACvB,iBAAiB,EAAE,MAAM,CAAC,uBAAuB;CAClD,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,gBAA6C,EACvB,EAAE;IACxB,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC;IACpC,OAAO;QACL,MAAM,EAAE,gCAAgC,CAAC,MAAM,CAAC;QAChD,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;QACjD,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;QACjD,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;QACjD,qEAAqE;QACrE,yDAAyD;QACzD,yBAAyB,EAAE,MAAM,CAAC,yBAAyB;QAC3D,gCAAgC,EAAE,MAAM,CAAC,gCAAgC;QACzE,0EAA0E;QAC1E,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB;YACtE,CAAC,CAAC;gBACE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,OAAO;gBAClE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,UAAU;aACpE;YACH,CAAC,CAAC,SAAS;QACb,4EAA4E;QAC5E,uBAAuB,EAAE,GAAG,EAAE,CAC5B,yBAAyB,CAAC,oBAAoB,CAC5C,gBAAgB,CAAC,eAAe,CACjC,EAAE,GAAG;KACT,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,CACnD,gBAA6C,EACV,EAAE,CACrC,gCAAgC,CAC9B,gBAAgB,EAChB,8BAA8B,CAAC,gBAAgB,CAAC,CACjD,CAAC;AAEJ;;;;GAIG;AACH,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IACrD;;;OAGG;IACH,YACE,gBAA6C,EAC7C,MAAmB,EACnB,kBAA2C,EAC3C,cAAmC;QAEnC,KAAK,CAAC,gBAAgB,EAAE,8BAA8B,CAAC,gBAAgB,CAAC,EAAE;YACxE,MAAM;YACN,kBAAkB;YAClB,cAAc;SACf,CAAC,CAAC;IACL,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@finos/legend-application-query",
3
- "version": "13.8.62",
3
+ "version": "13.8.63",
4
4
  "description": "Legend Query application core",
5
5
  "keywords": [
6
6
  "legend",
@@ -47,15 +47,14 @@
47
47
  "@finos/legend-application": "16.0.129",
48
48
  "@finos/legend-art": "7.1.169",
49
49
  "@finos/legend-code-editor": "2.0.211",
50
- "@finos/legend-cube-builder": "0.0.5",
50
+ "@finos/legend-cube-builder": "0.0.6",
51
51
  "@finos/legend-data-cube": "0.3.129",
52
- "@finos/legend-extension-dsl-data-space": "10.4.264",
52
+ "@finos/legend-extension-dsl-data-space": "10.4.265",
53
53
  "@finos/legend-graph": "32.8.0",
54
54
  "@finos/legend-lego": "2.0.231",
55
55
  "@finos/legend-query-builder": "4.19.20",
56
56
  "@finos/legend-server-depot": "6.1.24",
57
57
  "@finos/legend-server-lakehouse": "0.4.0",
58
- "@finos/legend-server-marketplace": "0.2.18",
59
58
  "@finos/legend-shared": "11.0.32",
60
59
  "@finos/legend-storage": "3.0.154",
61
60
  "@testing-library/dom": "10.4.0",
@@ -15,35 +15,15 @@
15
15
  */
16
16
 
17
17
  import {
18
- buildCubeConnectionExplorer,
19
- buildCubeDataProductCatalog,
20
- buildCubeEngine,
21
- buildCubeIngestCatalog,
22
- buildCubeLakehouseEnvironment,
23
- buildCubeProjectCatalog,
24
- buildCubeServiceCatalog,
25
- CubeDataProductEnvironmentType,
26
- CubeEngineClientSettings,
27
- getCubeRememberedWarehouse,
18
+ buildLegendCubeLakehouseServices,
19
+ LegendCubeHost,
28
20
  type CubeConnectionExplorer,
29
- type CubeDataProductCatalog,
30
21
  type CubeEngine,
31
- type CubeIngestCatalog,
22
+ type CubeEngineConfig,
32
23
  type CubeLakehouseServices,
33
24
  type CubeProjectCatalog,
34
- type CubeServiceCatalog,
35
- type CubeEngineConfig,
36
- type CubeHost,
37
- LocalModelCatalog,
25
+ type LegendCubeHostConfig,
38
26
  } from '@finos/legend-cube-builder';
39
- import { DepotServerClient } from '@finos/legend-server-depot';
40
- import {
41
- LakehouseContractServerClient,
42
- LakehouseIngestServerClient,
43
- LakehousePlatformServerClient,
44
- } from '@finos/legend-server-lakehouse';
45
- import { MarketplaceServerClient } from '@finos/legend-server-marketplace';
46
- import { EXTERNAL_APPLICATION_NAVIGATION__generateMarketplaceDataProductUrl } from '../../__lib__/LegendQueryNavigation.js';
47
27
  import { LegendQueryUserDataHelper } from '../../__lib__/LegendQueryUserDataHelper.js';
48
28
  import type { LegendQueryApplicationConfig } from '../../application/LegendQueryApplicationConfig.js';
49
29
  import type { LegendQueryApplicationStore } from '../LegendQueryBaseStore.js';
@@ -60,60 +40,24 @@ export const buildLegendQueryCubeEngineConfig = (
60
40
  });
61
41
 
62
42
  /**
63
- * What Cube needs to read and run data products (PLAN §6.8), with Query's
64
- * lakehouse and depot, configured as Query's own: none when Query has no
65
- * lakehouse, so an open-source deployment without one offers no data
66
- * products. With a marketplace server too, its search is used
43
+ * Query's servers, as Cube's host reads them (PLAN §11.18): Query's engine,
44
+ * depot, lakehouse and marketplace, configured as Query's own, and the
45
+ * lakehouse environment Query remembers for the viewer
67
46
  */
68
- export const buildLegendQueryCubeLakehouseServices = (
47
+ export const buildLegendQueryCubeHostConfig = (
69
48
  applicationStore: LegendQueryApplicationStore,
70
- ): CubeLakehouseServices | undefined => {
71
- const { config, tracerService } = applicationStore;
72
- if (!config.lakehouseContractUrl || !config.depotServerUrl) {
73
- return undefined;
74
- }
75
- const contractServerClient = new LakehouseContractServerClient({
76
- baseUrl: config.lakehouseContractUrl,
77
- });
78
- contractServerClient.setTracerService(tracerService);
79
- const depotServerClient = new DepotServerClient({
80
- serverUrl: config.depotServerUrl,
81
- });
82
- depotServerClient.setTracerService(tracerService);
83
- let marketplaceServerClient: MarketplaceServerClient | undefined;
84
- if (config.marketplaceServerUrl) {
85
- marketplaceServerClient = new MarketplaceServerClient({
86
- serverUrl: config.marketplaceServerUrl,
87
- // the client only stores it, never reading it, and Cube calls no subscription route
88
- subscriptionUrl: '',
89
- });
90
- marketplaceServerClient.setTracerService(tracerService);
91
- }
92
- // ingest data sets need the platform, which names the ingest servers; the
93
- // ingest client has no server of its own: each call names one
94
- let platformServerClient: LakehousePlatformServerClient | undefined;
95
- let ingestServerClient: LakehouseIngestServerClient | undefined;
96
- if (config.lakehousePlatformUrl) {
97
- platformServerClient = new LakehousePlatformServerClient(
98
- config.lakehousePlatformUrl,
99
- );
100
- platformServerClient.setTracerService(tracerService);
101
- ingestServerClient = new LakehouseIngestServerClient(undefined);
102
- ingestServerClient.setTracerService(tracerService);
103
- }
49
+ ): LegendCubeHostConfig => {
50
+ const { config } = applicationStore;
104
51
  return {
105
- platformServerClient,
106
- ingestServerClient,
107
- contractServerClient,
108
- depotServerClient,
109
- marketplaceServerClient,
110
- getAccessToken: () => applicationStore.getAccessToken(),
111
- getCurrentUser: () => applicationStore.identityService.currentUser,
112
- // the environment Query remembers for the viewer, as Query's editor uses it
113
- getPreferredEnvironment: () =>
114
- LegendQueryUserDataHelper.getLakehouseUserInfo(
115
- applicationStore.userDataService,
116
- )?.env,
52
+ engine: buildLegendQueryCubeEngineConfig(config),
53
+ depotServerUrl: config.depotServerUrl,
54
+ lakehouseContractUrl: config.lakehouseContractUrl,
55
+ lakehousePlatformUrl: config.lakehousePlatformUrl,
56
+ marketplaceServerUrl: config.marketplaceServerUrl,
57
+ // a data product links to the marketplace of its deployment's class;
58
+ // Query's own links choose by a SNAPSHOT version instead
59
+ marketplaceApplicationUrl: config.marketplaceApplicationUrl,
60
+ marketplaceProductionParallelUrl: config.marketplaceProductionParallelUrl,
117
61
  // the stereotype Studio and Marketplace mark groups open to everyone with
118
62
  enterpriseStereotype: config.options.dataProductConfig?.publicStereotype
119
63
  ? {
@@ -121,59 +65,33 @@ export const buildLegendQueryCubeLakehouseServices = (
121
65
  value: config.options.dataProductConfig.publicStereotype.stereotype,
122
66
  }
123
67
  : undefined,
124
- // the marketplace of the deployment's class, where its deployment is;
125
- // Query's own links choose by a SNAPSHOT version instead
126
- getMarketplaceLink: (target) => {
127
- const marketplaceUrl =
128
- target.environmentType ===
129
- CubeDataProductEnvironmentType.PRODUCTION_PARALLEL
130
- ? config.marketplaceProductionParallelUrl
131
- : config.marketplaceApplicationUrl;
132
- return marketplaceUrl
133
- ? EXTERNAL_APPLICATION_NAVIGATION__generateMarketplaceDataProductUrl(
134
- marketplaceUrl,
135
- target.dataProductId,
136
- target.deploymentId,
137
- target.accessPointGroup,
138
- )
139
- : undefined;
140
- },
68
+ // the environment Query remembers for the viewer, as Query's editor uses it
69
+ getPreferredEnvironment: () =>
70
+ LegendQueryUserDataHelper.getLakehouseUserInfo(
71
+ applicationStore.userDataService,
72
+ )?.env,
141
73
  };
142
74
  };
143
75
 
144
- /** The published projects in Query's depot, or none without a depot */
145
- export const buildLegendQueryCubeProjectCatalog = (
76
+ /**
77
+ * What Cube needs to read and run data products (PLAN §6.8), with Query's
78
+ * lakehouse and depot: none when Query has no lakehouse, so an open-source
79
+ * deployment without one offers no data products
80
+ */
81
+ export const buildLegendQueryCubeLakehouseServices = (
146
82
  applicationStore: LegendQueryApplicationStore,
147
- ): CubeProjectCatalog | undefined => {
148
- const { config, tracerService } = applicationStore;
149
- if (!config.depotServerUrl) {
150
- return undefined;
151
- }
152
- const depotServerClient = new DepotServerClient({
153
- serverUrl: config.depotServerUrl,
154
- });
155
- depotServerClient.setTracerService(tracerService);
156
- return buildCubeProjectCatalog(depotServerClient);
157
- };
83
+ ): CubeLakehouseServices | undefined =>
84
+ buildLegendCubeLakehouseServices(
85
+ applicationStore,
86
+ buildLegendQueryCubeHostConfig(applicationStore),
87
+ );
158
88
 
159
89
  /**
160
- * Legend Query as the host of the Cube page (PLAN §3.5): Query's engine and
161
- * application store, the bundled models, direct database connections read
162
- * through Query's engine, and, when Query has a lakehouse, its deployed data
163
- * products (PLAN §6.8). One per visit to the page.
90
+ * Legend Query as the host of the Cube page (PLAN §3.5): the host a Legend
91
+ * deployment gives Cube (PLAN §11.18), from Query's config. One per visit to
92
+ * the page.
164
93
  */
165
- export class LegendQueryCubeHost implements CubeHost {
166
- readonly applicationStore: LegendQueryApplicationStore;
167
- readonly engine: CubeEngine;
168
- readonly modelCatalog: LocalModelCatalog;
169
- readonly connectionExplorer: CubeConnectionExplorer;
170
- readonly dataProductCatalog: CubeDataProductCatalog | undefined;
171
- readonly ingestCatalog: CubeIngestCatalog | undefined;
172
- readonly projectCatalog: CubeProjectCatalog | undefined;
173
- readonly serviceCatalog: CubeServiceCatalog;
174
- /** The engine URL and compression Cube's engine clients share, which Dev Settings changes */
175
- readonly engineClientSettings: CubeEngineClientSettings;
176
-
94
+ export class LegendQueryCubeHost extends LegendCubeHost {
177
95
  /**
178
96
  * Tests give an engine, an explorer and a project catalog; otherwise each
179
97
  * is built from Query's config
@@ -184,51 +102,10 @@ export class LegendQueryCubeHost implements CubeHost {
184
102
  connectionExplorer?: CubeConnectionExplorer,
185
103
  projectCatalog?: CubeProjectCatalog,
186
104
  ) {
187
- this.applicationStore = applicationStore;
188
- const config = buildLegendQueryCubeEngineConfig(applicationStore.config);
189
- this.engineClientSettings = new CubeEngineClientSettings(config);
190
- const lakehouse = buildLegendQueryCubeLakehouseServices(applicationStore);
191
- this.ingestCatalog = lakehouse
192
- ? buildCubeIngestCatalog(
193
- config,
194
- applicationStore.tracerService,
195
- lakehouse,
196
- this.engineClientSettings,
197
- )
198
- : undefined;
199
- this.engine =
200
- engine ??
201
- buildCubeEngine(config, applicationStore.tracerService, {
202
- ingestCatalog: this.ingestCatalog,
203
- lakehouseEnvironment: lakehouse
204
- ? buildCubeLakehouseEnvironment(lakehouse)
205
- : undefined,
206
- getRememberedWarehouse: () =>
207
- getCubeRememberedWarehouse(applicationStore.userDataService),
208
- clientSettings: this.engineClientSettings,
209
- });
210
- this.dataProductCatalog = lakehouse
211
- ? buildCubeDataProductCatalog(lakehouse)
212
- : undefined;
213
- this.modelCatalog = new LocalModelCatalog(this.engine);
214
- // its own client, configured as the engine's
215
- this.connectionExplorer =
216
- connectionExplorer ??
217
- buildCubeConnectionExplorer(
218
- config,
219
- applicationStore.tracerService,
220
- this.engineClientSettings,
221
- );
222
- // the published projects in Query's depot (PLAN §6.3); it reads nothing
223
- // until the source dialog's Project tab opens
224
- this.projectCatalog =
225
- projectCatalog ?? buildLegendQueryCubeProjectCatalog(applicationStore);
226
- // the services in the registry of Query's engine (PLAN §6.4), in
227
- // progress; it reads nothing until the source dialog's Service tab opens
228
- this.serviceCatalog = buildCubeServiceCatalog(
229
- config,
230
- applicationStore.tracerService,
231
- this.engineClientSettings,
232
- );
105
+ super(applicationStore, buildLegendQueryCubeHostConfig(applicationStore), {
106
+ engine,
107
+ connectionExplorer,
108
+ projectCatalog,
109
+ });
233
110
  }
234
111
  }