@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 +1 -1
- package/lib/light-mode.css +1 -1
- package/lib/package.json +1 -2
- package/lib/stores/cube/LegendQueryCubeHost.d.ts +13 -21
- package/lib/stores/cube/LegendQueryCubeHost.d.ts.map +1 -1
- package/lib/stores/cube/LegendQueryCubeHost.js +32 -120
- package/lib/stores/cube/LegendQueryCubeHost.js.map +1 -1
- package/package.json +3 -4
- package/src/stores/cube/LegendQueryCubeHost.ts +44 -167
package/lib/index.css
CHANGED
package/lib/light-mode.css
CHANGED
package/lib/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finos/legend-application-query",
|
|
3
|
-
"version": "13.8.
|
|
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 {
|
|
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
|
|
24
|
-
*
|
|
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):
|
|
32
|
-
*
|
|
33
|
-
*
|
|
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
|
|
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,
|
|
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 {
|
|
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
|
-
*
|
|
32
|
-
* lakehouse and
|
|
33
|
-
* lakehouse
|
|
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
|
|
37
|
-
const { config
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
|
86
|
-
|
|
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
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
|
|
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
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
19
|
-
|
|
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
|
|
22
|
+
type CubeEngineConfig,
|
|
32
23
|
type CubeLakehouseServices,
|
|
33
24
|
type CubeProjectCatalog,
|
|
34
|
-
type
|
|
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
|
-
*
|
|
64
|
-
* lakehouse and
|
|
65
|
-
* lakehouse
|
|
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
|
|
47
|
+
export const buildLegendQueryCubeHostConfig = (
|
|
69
48
|
applicationStore: LegendQueryApplicationStore,
|
|
70
|
-
):
|
|
71
|
-
const { config
|
|
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
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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
|
-
/**
|
|
145
|
-
|
|
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
|
-
):
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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):
|
|
161
|
-
*
|
|
162
|
-
*
|
|
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
|
|
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
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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
|
}
|