@finos/legend-application-data-cube 0.4.8 → 0.5.0
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/application/LegendDataCube.d.ts.map +1 -1
- package/lib/application/LegendDataCube.js +1 -1
- package/lib/application/LegendDataCube.js.map +1 -1
- package/lib/application/LegendDataCubeApplicationConfig.d.ts +12 -0
- package/lib/application/LegendDataCubeApplicationConfig.d.ts.map +1 -1
- package/lib/application/LegendDataCubeApplicationConfig.js +7 -0
- package/lib/application/LegendDataCubeApplicationConfig.js.map +1 -1
- package/lib/application/__test-utils__/LegendDataCubeApplicationTestUtils.d.ts.map +1 -1
- package/lib/application/__test-utils__/LegendDataCubeApplicationTestUtils.js +12 -0
- package/lib/application/__test-utils__/LegendDataCubeApplicationTestUtils.js.map +1 -1
- package/lib/components/LegendDataCubeWebApplication.d.ts +2 -0
- package/lib/components/LegendDataCubeWebApplication.d.ts.map +1 -1
- package/lib/components/LegendDataCubeWebApplication.js +24 -2
- package/lib/components/LegendDataCubeWebApplication.js.map +1 -1
- package/lib/components/builder/LegendDataCubeCreator.d.ts.map +1 -1
- package/lib/components/builder/LegendDataCubeCreator.js +5 -1
- package/lib/components/builder/LegendDataCubeCreator.js.map +1 -1
- package/lib/components/builder/source/IngestDefinitionDataCubeSourceBuilder.d.ts +5 -0
- package/lib/components/builder/source/IngestDefinitionDataCubeSourceBuilder.d.ts.map +1 -0
- package/lib/components/builder/source/IngestDefinitionDataCubeSourceBuilder.js +70 -0
- package/lib/components/builder/source/IngestDefinitionDataCubeSourceBuilder.js.map +1 -0
- package/lib/components/builder/source/IngestDefinitionDataCubeSourceLoader.d.ts +22 -0
- package/lib/components/builder/source/IngestDefinitionDataCubeSourceLoader.d.ts.map +1 -0
- package/lib/components/builder/source/IngestDefinitionDataCubeSourceLoader.js +37 -0
- package/lib/components/builder/source/IngestDefinitionDataCubeSourceLoader.js.map +1 -0
- package/lib/components/builder/source/LegendDataCubeSourceLoader.d.ts.map +1 -1
- package/lib/components/builder/source/LegendDataCubeSourceLoader.js.map +1 -1
- package/lib/index.css +1 -1
- package/lib/package.json +3 -1
- package/lib/stores/LegendDataCubeBaseStore.d.ts +3 -0
- package/lib/stores/LegendDataCubeBaseStore.d.ts.map +1 -1
- package/lib/stores/LegendDataCubeBaseStore.js +7 -0
- package/lib/stores/LegendDataCubeBaseStore.js.map +1 -1
- package/lib/stores/LegendDataCubeDataCubeEngine.d.ts +3 -0
- package/lib/stores/LegendDataCubeDataCubeEngine.d.ts.map +1 -1
- package/lib/stores/LegendDataCubeDataCubeEngine.js +78 -1
- package/lib/stores/LegendDataCubeDataCubeEngine.js.map +1 -1
- package/lib/stores/builder/LegendDataCubeBuilderStore.d.ts +3 -0
- package/lib/stores/builder/LegendDataCubeBuilderStore.d.ts.map +1 -1
- package/lib/stores/builder/LegendDataCubeBuilderStore.js +8 -0
- package/lib/stores/builder/LegendDataCubeBuilderStore.js.map +1 -1
- package/lib/stores/builder/LegendDataCubeCreatorState.d.ts.map +1 -1
- package/lib/stores/builder/LegendDataCubeCreatorState.js +3 -0
- package/lib/stores/builder/LegendDataCubeCreatorState.js.map +1 -1
- package/lib/stores/builder/source/IngestDefinitionDataCubeSourceBuilderState.d.ts +51 -0
- package/lib/stores/builder/source/IngestDefinitionDataCubeSourceBuilderState.d.ts.map +1 -0
- package/lib/stores/builder/source/IngestDefinitionDataCubeSourceBuilderState.js +142 -0
- package/lib/stores/builder/source/IngestDefinitionDataCubeSourceBuilderState.js.map +1 -0
- package/lib/stores/builder/source/IngestDefinitionDataCubeSourceLoaderState.d.ts +33 -0
- package/lib/stores/builder/source/IngestDefinitionDataCubeSourceLoaderState.d.ts.map +1 -0
- package/lib/stores/builder/source/IngestDefinitionDataCubeSourceLoaderState.js +46 -0
- package/lib/stores/builder/source/IngestDefinitionDataCubeSourceLoaderState.js.map +1 -0
- package/lib/stores/builder/source/LegendDataCubeSourceBuilderState.d.ts +2 -1
- package/lib/stores/builder/source/LegendDataCubeSourceBuilderState.d.ts.map +1 -1
- package/lib/stores/builder/source/LegendDataCubeSourceBuilderState.js +1 -0
- package/lib/stores/builder/source/LegendDataCubeSourceBuilderState.js.map +1 -1
- package/lib/stores/model/IngestDefinitionDataCubeSource.d.ts +31 -0
- package/lib/stores/model/IngestDefinitionDataCubeSource.d.ts.map +1 -0
- package/lib/stores/model/IngestDefinitionDataCubeSource.js +37 -0
- package/lib/stores/model/IngestDefinitionDataCubeSource.js.map +1 -0
- package/package.json +9 -7
- package/src/application/LegendDataCube.tsx +4 -1
- package/src/application/LegendDataCubeApplicationConfig.ts +27 -0
- package/src/application/__test-utils__/LegendDataCubeApplicationTestUtils.ts +12 -0
- package/src/components/LegendDataCubeWebApplication.tsx +62 -9
- package/src/components/builder/LegendDataCubeCreator.tsx +9 -0
- package/src/components/builder/source/IngestDefinitionDataCubeSourceBuilder.tsx +149 -0
- package/src/components/builder/source/IngestDefinitionDataCubeSourceLoader.tsx +51 -0
- package/src/components/builder/source/LegendDataCubeSourceLoader.tsx +5 -0
- package/src/stores/LegendDataCubeBaseStore.ts +20 -0
- package/src/stores/LegendDataCubeDataCubeEngine.ts +113 -0
- package/src/stores/builder/LegendDataCubeBuilderStore.tsx +20 -0
- package/src/stores/builder/LegendDataCubeCreatorState.tsx +9 -0
- package/src/stores/builder/source/IngestDefinitionDataCubeSourceBuilderState.ts +217 -0
- package/src/stores/builder/source/IngestDefinitionDataCubeSourceLoaderState.ts +92 -0
- package/src/stores/builder/source/LegendDataCubeSourceBuilderState.ts +1 -0
- package/src/stores/model/IngestDefinitionDataCubeSource.ts +48 -0
- package/tsconfig.json +5 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IngestDefinitionDataCubeSourceBuilderState.d.ts","sourceRoot":"","sources":["../../../../src/stores/builder/source/IngestDefinitionDataCubeSourceBuilderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAChC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAE1F,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EACnC,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,qBAAa,0CAA2C,SAAQ,gCAAgC;IAC9F,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,gBAAgB,EAAE,WAAW,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC;IAC/D,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAM;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAM;IAEtB,QAAQ,CAAC,qBAAqB,EAAE,6BAA6B,CAAC;IAC9D,QAAQ,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;gBAGxD,WAAW,EAAE,8BAA8B,EAC3C,MAAM,EAAE,4BAA4B,EACpC,oBAAoB,EAAE,6BAA6B,EACnD,kBAAkB,EAAE,2BAA2B,EAC/C,YAAY,EAAE,oBAAoB;IA4BpC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIvD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIjD,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS;IAI1D,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE;IAIlC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE;IAI1B,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS;IAI5C,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS;IAkChD,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS;IAwBpD,eAAe,CAAC,SAAS,EAAE,MAAM;IAIjC,UAAU;IASV,KAAK;IASL,IAAa,KAAK,IAAI,+BAA+B,CAEpD;IAED,IAAa,OAAO,IAAI,OAAO,CAO9B;IAEQ,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC;CAkBpD"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025-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 { action, makeObservable, observable } from 'mobx';
|
|
17
|
+
import { LegendDataCubeSourceBuilderState, LegendDataCubeSourceBuilderType, } from './LegendDataCubeSourceBuilderState.js';
|
|
18
|
+
import { guaranteeNonNullable } from '@finos/legend-shared';
|
|
19
|
+
import { RawIngestDefinitionDataCubeSource } from '../../model/IngestDefinitionDataCubeSource.js';
|
|
20
|
+
import { IngestDeploymentServerConfig, ProducerEnvironment, } from '@finos/legend-server-lakehouse';
|
|
21
|
+
export class IngestDefinitionDataCubeSourceBuilderState extends LegendDataCubeSourceBuilderState {
|
|
22
|
+
deploymentId;
|
|
23
|
+
warehouse;
|
|
24
|
+
ingestDefinition;
|
|
25
|
+
selectedIngestUrn;
|
|
26
|
+
ingestionServerUrl;
|
|
27
|
+
selectedTable;
|
|
28
|
+
paths;
|
|
29
|
+
ingestUrns = [];
|
|
30
|
+
tables = [];
|
|
31
|
+
_platformServerClient;
|
|
32
|
+
_ingestServerClient;
|
|
33
|
+
constructor(application, engine, platformServerClient, ingestServerClient, alertService) {
|
|
34
|
+
super(application, engine, alertService);
|
|
35
|
+
this._platformServerClient = platformServerClient;
|
|
36
|
+
this._ingestServerClient = ingestServerClient;
|
|
37
|
+
makeObservable(this, {
|
|
38
|
+
deploymentId: observable,
|
|
39
|
+
warehouse: observable,
|
|
40
|
+
ingestUrns: observable,
|
|
41
|
+
selectedIngestUrn: observable,
|
|
42
|
+
tables: observable,
|
|
43
|
+
selectedTable: observable,
|
|
44
|
+
setDeploymentId: action,
|
|
45
|
+
setSelectedIngestUrn: action,
|
|
46
|
+
setWarehouse: action,
|
|
47
|
+
setIngestUrns: action,
|
|
48
|
+
setTables: action,
|
|
49
|
+
setSelectedTable: action,
|
|
50
|
+
});
|
|
51
|
+
this.selectedIngestUrn = '';
|
|
52
|
+
this.selectedTable = '';
|
|
53
|
+
this.warehouse = undefined;
|
|
54
|
+
this.paths = [];
|
|
55
|
+
}
|
|
56
|
+
setDeploymentId(deploymentId) {
|
|
57
|
+
this.deploymentId = deploymentId;
|
|
58
|
+
}
|
|
59
|
+
setWarehouse(warehouse) {
|
|
60
|
+
this.warehouse = warehouse;
|
|
61
|
+
}
|
|
62
|
+
setSelectedIngestUrn(selectedIngestUrn) {
|
|
63
|
+
this.selectedIngestUrn = selectedIngestUrn;
|
|
64
|
+
}
|
|
65
|
+
setIngestUrns(ingestUrns) {
|
|
66
|
+
this.ingestUrns = ingestUrns;
|
|
67
|
+
}
|
|
68
|
+
setTables(tables) {
|
|
69
|
+
this.tables = tables;
|
|
70
|
+
}
|
|
71
|
+
setSelectedTable(selectedTable) {
|
|
72
|
+
this.selectedTable = selectedTable;
|
|
73
|
+
}
|
|
74
|
+
async fetchIngestUrns(access_token) {
|
|
75
|
+
//TODO: we should retry this method if access token is invalid
|
|
76
|
+
try {
|
|
77
|
+
const producerServer = await this._platformServerClient.findProducerServer(guaranteeNonNullable(this.deploymentId), 'DEPLOYMENT', access_token);
|
|
78
|
+
const ingestServerUrl = IngestDeploymentServerConfig.serialization.fromJson(producerServer).ingestServerUrl;
|
|
79
|
+
this.ingestionServerUrl = ingestServerUrl;
|
|
80
|
+
const producerUrn = await this._ingestServerClient.getProducerEnvironment(guaranteeNonNullable(this.deploymentId), ingestServerUrl, access_token);
|
|
81
|
+
const producer = ProducerEnvironment.serialization.fromJson(producerUrn);
|
|
82
|
+
const ingestDefinitions = await this._ingestServerClient.getIngestDefinitions(producer.producerEnvironmentUrn, ingestServerUrl, access_token);
|
|
83
|
+
this.setIngestUrns(ingestDefinitions);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async fetchDatasets(access_token) {
|
|
91
|
+
this.setTables([]);
|
|
92
|
+
this.setSelectedTable(undefined);
|
|
93
|
+
try {
|
|
94
|
+
const plainObjectDef = await this._ingestServerClient.getIngestDefinitionDetail(guaranteeNonNullable(this.selectedIngestUrn), this.ingestionServerUrl, access_token);
|
|
95
|
+
this.ingestDefinition = Object.values(plainObjectDef)[0];
|
|
96
|
+
this.setTables(
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
98
|
+
this.ingestDefinition.datasets.map(
|
|
99
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
100
|
+
(dataset) => dataset.name));
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
decoratedIngest(ingestUrn) {
|
|
107
|
+
return ingestUrn.split('~').pop();
|
|
108
|
+
}
|
|
109
|
+
createPath() {
|
|
110
|
+
this.paths.push(guaranteeNonNullable(this.decoratedIngest(guaranteeNonNullable(this.selectedIngestUrn))), guaranteeNonNullable(this.selectedTable));
|
|
111
|
+
}
|
|
112
|
+
reset() {
|
|
113
|
+
this.setDeploymentId(undefined);
|
|
114
|
+
this.setIngestUrns([]);
|
|
115
|
+
this.setSelectedIngestUrn(undefined);
|
|
116
|
+
this.setTables([]);
|
|
117
|
+
this.setSelectedTable(undefined);
|
|
118
|
+
this.setWarehouse(undefined);
|
|
119
|
+
}
|
|
120
|
+
get label() {
|
|
121
|
+
return LegendDataCubeSourceBuilderType.INGEST_DEFINTION;
|
|
122
|
+
}
|
|
123
|
+
get isValid() {
|
|
124
|
+
return (Boolean(this.warehouse) &&
|
|
125
|
+
Boolean(this.selectedIngestUrn) &&
|
|
126
|
+
Boolean(this.selectedTable) &&
|
|
127
|
+
Boolean(this.deploymentId));
|
|
128
|
+
}
|
|
129
|
+
generateSourceData() {
|
|
130
|
+
// register ingest definition
|
|
131
|
+
this._engine.registerIngestDefinition(this.ingestDefinition);
|
|
132
|
+
// build data cube source
|
|
133
|
+
this.createPath();
|
|
134
|
+
const rawSource = new RawIngestDefinitionDataCubeSource();
|
|
135
|
+
rawSource.ingestDefinitionUrn = guaranteeNonNullable(this.selectedIngestUrn);
|
|
136
|
+
rawSource.ingestServerUrl = guaranteeNonNullable(this.ingestionServerUrl);
|
|
137
|
+
rawSource.paths = this.paths;
|
|
138
|
+
rawSource.warehouse = guaranteeNonNullable(this.warehouse);
|
|
139
|
+
return Promise.resolve(RawIngestDefinitionDataCubeSource.serialization.toJson(rawSource));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=IngestDefinitionDataCubeSourceBuilderState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IngestDefinitionDataCubeSourceBuilderState.js","sourceRoot":"","sources":["../../../../src/stores/builder/source/IngestDefinitionDataCubeSourceBuilderState.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025-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 { ActionState, type PlainObject } from '@finos/legend-shared';
|
|
17
|
+
import type { LegendDataCubeApplicationStore } from '../../LegendDataCubeBaseStore.js';
|
|
18
|
+
import type { LegendDataCubeDataCubeEngine } from '../../LegendDataCubeDataCubeEngine.js';
|
|
19
|
+
import { LegendDataCubeSourceLoaderState } from './LegendDataCubeSourceLoaderState.js';
|
|
20
|
+
import { LegendDataCubeSourceBuilderType } from './LegendDataCubeSourceBuilderState.js';
|
|
21
|
+
import type { DataCubeAlertService } from '@finos/legend-data-cube';
|
|
22
|
+
import type { PersistentDataCube } from '@finos/legend-graph';
|
|
23
|
+
export declare class IngestDefinitionDataCubeSourceLoaderState extends LegendDataCubeSourceLoaderState {
|
|
24
|
+
readonly processState: ActionState;
|
|
25
|
+
private ingestDefinition;
|
|
26
|
+
private lakehouseIngestServerClient;
|
|
27
|
+
constructor(application: LegendDataCubeApplicationStore, engine: LegendDataCubeDataCubeEngine, alertService: DataCubeAlertService, sourceData: PlainObject, persistentDataCube: PersistentDataCube, onSuccess: () => Promise<void>, onError: (error: unknown) => Promise<void>);
|
|
28
|
+
get isValid(): boolean;
|
|
29
|
+
get label(): LegendDataCubeSourceBuilderType;
|
|
30
|
+
loadIngestDefinition(access_token: string | undefined): Promise<void>;
|
|
31
|
+
load(source: PlainObject | undefined): Promise<PlainObject<T>>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=IngestDefinitionDataCubeSourceLoaderState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IngestDefinitionDataCubeSourceLoaderState.d.ts","sourceRoot":"","sources":["../../../../src/stores/builder/source/IngestDefinitionDataCubeSourceLoaderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,WAAW,EAEX,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC1F,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAI9D,qBAAa,yCAA0C,SAAQ,+BAA+B;IAC5F,QAAQ,CAAC,YAAY,cAAwB;IAE7C,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,2BAA2B,CAA8B;gBAG/D,WAAW,EAAE,8BAA8B,EAC3C,MAAM,EAAE,4BAA4B,EACpC,YAAY,EAAE,oBAAoB,EAClC,UAAU,EAAE,WAAW,EACvB,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC;IAgB5C,IAAa,OAAO,IAAI,OAAO,CAE9B;IAED,IAAa,KAAK,oCAEjB;IAEK,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS;IAY5C,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS;CAYpD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025-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 { ActionState, guaranteeNonNullable, } from '@finos/legend-shared';
|
|
17
|
+
import { LegendDataCubeSourceLoaderState } from './LegendDataCubeSourceLoaderState.js';
|
|
18
|
+
import { LegendDataCubeSourceBuilderType } from './LegendDataCubeSourceBuilderState.js';
|
|
19
|
+
import { RawIngestDefinitionDataCubeSource } from '../../model/IngestDefinitionDataCubeSource.js';
|
|
20
|
+
import { LakehouseIngestServerClient } from '@finos/legend-server-lakehouse';
|
|
21
|
+
export class IngestDefinitionDataCubeSourceLoaderState extends LegendDataCubeSourceLoaderState {
|
|
22
|
+
processState = ActionState.create();
|
|
23
|
+
ingestDefinition;
|
|
24
|
+
lakehouseIngestServerClient;
|
|
25
|
+
constructor(application, engine, alertService, sourceData, persistentDataCube, onSuccess, onError) {
|
|
26
|
+
super(application, engine, alertService, sourceData, persistentDataCube, onSuccess, onError);
|
|
27
|
+
this.lakehouseIngestServerClient = new LakehouseIngestServerClient(undefined);
|
|
28
|
+
}
|
|
29
|
+
get isValid() {
|
|
30
|
+
return Boolean(this.ingestDefinition);
|
|
31
|
+
}
|
|
32
|
+
get label() {
|
|
33
|
+
return LegendDataCubeSourceBuilderType.INGEST_DEFINTION;
|
|
34
|
+
}
|
|
35
|
+
async loadIngestDefinition(access_token) {
|
|
36
|
+
const rawSource = RawIngestDefinitionDataCubeSource.serialization.fromJson(this.sourceData);
|
|
37
|
+
this.ingestDefinition =
|
|
38
|
+
await this.lakehouseIngestServerClient.getIngestDefinitionDetail(rawSource.ingestDefinitionUrn, rawSource.ingestServerUrl, access_token);
|
|
39
|
+
}
|
|
40
|
+
async load(source) {
|
|
41
|
+
const deserializedSource = RawIngestDefinitionDataCubeSource.serialization.fromJson(guaranteeNonNullable(source));
|
|
42
|
+
this._engine.registerIngestDefinition(this.ingestDefinition);
|
|
43
|
+
return RawIngestDefinitionDataCubeSource.serialization.toJson(deserializedSource);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=IngestDefinitionDataCubeSourceLoaderState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IngestDefinitionDataCubeSourceLoaderState.js","sourceRoot":"","sources":["../../../../src/stores/builder/source/IngestDefinitionDataCubeSourceLoaderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,WAAW,EACX,oBAAoB,GAErB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AAGxF,OAAO,EAAE,iCAAiC,EAAE,MAAM,+CAA+C,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAE7E,MAAM,OAAO,yCAA0C,SAAQ,+BAA+B;IACnF,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;IAErC,gBAAgB,CAA0B;IAC1C,2BAA2B,CAA8B;IAEjE,YACE,WAA2C,EAC3C,MAAoC,EACpC,YAAkC,EAClC,UAAuB,EACvB,kBAAsC,EACtC,SAA8B,EAC9B,OAA0C;QAE1C,KAAK,CACH,WAAW,EACX,MAAM,EACN,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,SAAS,EACT,OAAO,CACR,CAAC;QACF,IAAI,CAAC,2BAA2B,GAAG,IAAI,2BAA2B,CAChE,SAAS,CACV,CAAC;IACJ,CAAC;IAED,IAAa,OAAO;QAClB,OAAO,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACxC,CAAC;IAED,IAAa,KAAK;QAChB,OAAO,+BAA+B,CAAC,gBAAgB,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,YAAgC;QACzD,MAAM,SAAS,GAAG,iCAAiC,CAAC,aAAa,CAAC,QAAQ,CACxE,IAAI,CAAC,UAAU,CAChB,CAAC;QACF,IAAI,CAAC,gBAAgB;YACnB,MAAM,IAAI,CAAC,2BAA2B,CAAC,yBAAyB,CAC9D,SAAS,CAAC,mBAAmB,EAC7B,SAAS,CAAC,eAAe,EACzB,YAAY,CACb,CAAC;IACN,CAAC;IAEQ,KAAK,CAAC,IAAI,CAAC,MAA+B;QACjD,MAAM,kBAAkB,GACtB,iCAAiC,CAAC,aAAa,CAAC,QAAQ,CACtD,oBAAoB,CAAC,MAAM,CAAC,CAC7B,CAAC;QAEJ,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE7D,OAAO,iCAAiC,CAAC,aAAa,CAAC,MAAM,CAC3D,kBAAkB,CACnB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -21,7 +21,8 @@ export declare enum LegendDataCubeSourceBuilderType {
|
|
|
21
21
|
LEGEND_QUERY = "Legend Query",
|
|
22
22
|
FREEFORM_TDS_EXPRESSION = "Freeform TDS Expression",
|
|
23
23
|
LOCAL_FILE = "Local File",
|
|
24
|
-
USER_DEFINED_FUNCTION = "User Defined Function"
|
|
24
|
+
USER_DEFINED_FUNCTION = "User Defined Function",
|
|
25
|
+
INGEST_DEFINTION = "Ingest Definition"
|
|
25
26
|
}
|
|
26
27
|
export declare abstract class LegendDataCubeSourceBuilderState {
|
|
27
28
|
protected readonly _application: LegendDataCubeApplicationStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendDataCubeSourceBuilderState.d.ts","sourceRoot":"","sources":["../../../../src/stores/builder/source/LegendDataCubeSourceBuilderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC1F,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AAEjC,oBAAY,+BAA+B;IACzC,YAAY,iBAAiB;IAC7B,uBAAuB,4BAA4B;IACnD,UAAU,eAAe;IACzB,qBAAqB,0BAA0B;
|
|
1
|
+
{"version":3,"file":"LegendDataCubeSourceBuilderState.d.ts","sourceRoot":"","sources":["../../../../src/stores/builder/source/LegendDataCubeSourceBuilderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC1F,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AAEjC,oBAAY,+BAA+B;IACzC,YAAY,iBAAiB;IAC7B,uBAAuB,4BAA4B;IACnD,UAAU,eAAe;IACzB,qBAAqB,0BAA0B;IAC/C,gBAAgB,sBAAsB;CACvC;AAED,8BAAsB,gCAAgC;IACpD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,8BAA8B,CAAC;IAChE,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;IACzD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;gBAGrD,WAAW,EAAE,8BAA8B,EAC3C,MAAM,EAAE,4BAA4B,EACpC,YAAY,EAAE,oBAAoB;IAOpC,QAAQ,KAAK,KAAK,IAAI,+BAA+B,CAAC;IACtD,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC;IAChC,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC;IAEnD;;OAEG;IACH,qBAAqB,CAAC,aAAa,EAAE,qBAAqB;CAG3D"}
|
|
@@ -20,6 +20,7 @@ export var LegendDataCubeSourceBuilderType;
|
|
|
20
20
|
LegendDataCubeSourceBuilderType["FREEFORM_TDS_EXPRESSION"] = "Freeform TDS Expression";
|
|
21
21
|
LegendDataCubeSourceBuilderType["LOCAL_FILE"] = "Local File";
|
|
22
22
|
LegendDataCubeSourceBuilderType["USER_DEFINED_FUNCTION"] = "User Defined Function";
|
|
23
|
+
LegendDataCubeSourceBuilderType["INGEST_DEFINTION"] = "Ingest Definition";
|
|
23
24
|
})(LegendDataCubeSourceBuilderType || (LegendDataCubeSourceBuilderType = {}));
|
|
24
25
|
export class LegendDataCubeSourceBuilderState {
|
|
25
26
|
_application;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendDataCubeSourceBuilderState.js","sourceRoot":"","sources":["../../../../src/stores/builder/source/LegendDataCubeSourceBuilderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAoB,MAAM,sBAAsB,CAAC;AAQxD,MAAM,CAAN,IAAY,+
|
|
1
|
+
{"version":3,"file":"LegendDataCubeSourceBuilderState.js","sourceRoot":"","sources":["../../../../src/stores/builder/source/LegendDataCubeSourceBuilderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAoB,MAAM,sBAAsB,CAAC;AAQxD,MAAM,CAAN,IAAY,+BAMX;AAND,WAAY,+BAA+B;IACzC,gEAA6B,CAAA;IAC7B,sFAAmD,CAAA;IACnD,4DAAyB,CAAA;IACzB,kFAA+C,CAAA;IAC/C,yEAAsC,CAAA;AACxC,CAAC,EANW,+BAA+B,KAA/B,+BAA+B,QAM1C;AAED,MAAM,OAAgB,gCAAgC;IACjC,YAAY,CAAiC;IAC7C,OAAO,CAA+B;IACtC,aAAa,CAAuB;IAEvD,YACE,WAA2C,EAC3C,MAAoC,EACpC,YAAkC;QAElC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAMD;;OAEG;IACH,qBAAqB,CAAC,aAAoC;QACxD,aAAa;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025-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 { DataCubeSource } from '@finos/legend-data-cube';
|
|
17
|
+
import type { V1_PureModelContextData } from '@finos/legend-graph';
|
|
18
|
+
import { SerializationFactory, type PlainObject } from '@finos/legend-shared';
|
|
19
|
+
export declare const INGEST_DEFINITION_DATA_CUBE_SOURCE_TYPE = "ingestDefinition";
|
|
20
|
+
export declare class IngestDefinitionDataCubeSource extends DataCubeSource {
|
|
21
|
+
model: PlainObject<V1_PureModelContextData>;
|
|
22
|
+
runtime: string;
|
|
23
|
+
}
|
|
24
|
+
export declare class RawIngestDefinitionDataCubeSource {
|
|
25
|
+
ingestDefinitionUrn: string;
|
|
26
|
+
warehouse: string;
|
|
27
|
+
ingestServerUrl: string;
|
|
28
|
+
paths: string[];
|
|
29
|
+
static readonly serialization: SerializationFactory<RawIngestDefinitionDataCubeSource>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=IngestDefinitionDataCubeSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IngestDefinitionDataCubeSource.d.ts","sourceRoot":"","sources":["../../../src/stores/model/IngestDefinitionDataCubeSource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EACL,oBAAoB,EAEpB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAG9B,eAAO,MAAM,uCAAuC,qBAAqB,CAAC;AAE1E,qBAAa,8BAA+B,SAAQ,cAAc;IAChE,KAAK,EAAG,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAC7C,OAAO,EAAG,MAAM,CAAC;CAClB;AAED,qBAAa,iCAAiC;IAC5C,mBAAmB,EAAG,MAAM,CAAC;IAC7B,SAAS,EAAG,MAAM,CAAC;IACnB,eAAe,EAAG,MAAM,CAAC;IACzB,KAAK,EAAG,MAAM,EAAE,CAAC;IAEjB,MAAM,CAAC,QAAQ,CAAC,aAAa,0DAQ3B;CACH"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025-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 { DataCubeSource } from '@finos/legend-data-cube';
|
|
17
|
+
import { SerializationFactory, usingConstantValueSchema, } from '@finos/legend-shared';
|
|
18
|
+
import { createModelSchema, list, primitive } from 'serializr';
|
|
19
|
+
export const INGEST_DEFINITION_DATA_CUBE_SOURCE_TYPE = 'ingestDefinition';
|
|
20
|
+
export class IngestDefinitionDataCubeSource extends DataCubeSource {
|
|
21
|
+
model;
|
|
22
|
+
runtime;
|
|
23
|
+
}
|
|
24
|
+
export class RawIngestDefinitionDataCubeSource {
|
|
25
|
+
ingestDefinitionUrn;
|
|
26
|
+
warehouse;
|
|
27
|
+
ingestServerUrl;
|
|
28
|
+
paths;
|
|
29
|
+
static serialization = new SerializationFactory(createModelSchema(RawIngestDefinitionDataCubeSource, {
|
|
30
|
+
_type: usingConstantValueSchema(INGEST_DEFINITION_DATA_CUBE_SOURCE_TYPE),
|
|
31
|
+
ingestDefinitionUrn: primitive(),
|
|
32
|
+
warehouse: primitive(),
|
|
33
|
+
ingestServerUrl: primitive(),
|
|
34
|
+
paths: list(primitive()),
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=IngestDefinitionDataCubeSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IngestDefinitionDataCubeSource.js","sourceRoot":"","sources":["../../../src/stores/model/IngestDefinitionDataCubeSource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EACL,oBAAoB,EACpB,wBAAwB,GAEzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE/D,MAAM,CAAC,MAAM,uCAAuC,GAAG,kBAAkB,CAAC;AAE1E,MAAM,OAAO,8BAA+B,SAAQ,cAAc;IAChE,KAAK,CAAwC;IAC7C,OAAO,CAAU;CAClB;AAED,MAAM,OAAO,iCAAiC;IAC5C,mBAAmB,CAAU;IAC7B,SAAS,CAAU;IACnB,eAAe,CAAU;IACzB,KAAK,CAAY;IAEjB,MAAM,CAAU,aAAa,GAAG,IAAI,oBAAoB,CACtD,iBAAiB,CAAC,iCAAiC,EAAE;QACnD,KAAK,EAAE,wBAAwB,CAAC,uCAAuC,CAAC;QACxE,mBAAmB,EAAE,SAAS,EAAE;QAChC,SAAS,EAAE,SAAS,EAAE;QACtB,eAAe,EAAE,SAAS,EAAE;QAC5B,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;KACzB,CAAC,CACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finos/legend-application-data-cube",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Legend DataCube application core",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"legend",
|
|
@@ -43,13 +43,14 @@
|
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@duckdb/duckdb-wasm": "1.29.0",
|
|
46
|
-
"@finos/legend-application": "16.0.
|
|
47
|
-
"@finos/legend-art": "7.1.
|
|
48
|
-
"@finos/legend-code-editor": "2.0.
|
|
49
|
-
"@finos/legend-data-cube": "0.3.
|
|
50
|
-
"@finos/legend-graph": "32.1.
|
|
51
|
-
"@finos/legend-query-builder": "4.17.
|
|
46
|
+
"@finos/legend-application": "16.0.61",
|
|
47
|
+
"@finos/legend-art": "7.1.115",
|
|
48
|
+
"@finos/legend-code-editor": "2.0.103",
|
|
49
|
+
"@finos/legend-data-cube": "0.3.9",
|
|
50
|
+
"@finos/legend-graph": "32.1.61",
|
|
51
|
+
"@finos/legend-query-builder": "4.17.21",
|
|
52
52
|
"@finos/legend-server-depot": "6.0.97",
|
|
53
|
+
"@finos/legend-server-lakehouse": "0.1.0",
|
|
53
54
|
"@finos/legend-shared": "11.0.18",
|
|
54
55
|
"@finos/legend-storage": "3.0.137",
|
|
55
56
|
"@types/react": "19.0.10",
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
"mobx-react-lite": "4.1.0",
|
|
60
61
|
"react": "19.0.0",
|
|
61
62
|
"react-dom": "19.0.0",
|
|
63
|
+
"react-oidc-context": "^3.3.0",
|
|
62
64
|
"serializr": "3.0.3"
|
|
63
65
|
},
|
|
64
66
|
"devDependencies": {
|
|
@@ -66,7 +66,10 @@ export class LegendDataCube extends LegendApplication {
|
|
|
66
66
|
): Promise<void> {
|
|
67
67
|
createRoot(getApplicationRootElement()).render(
|
|
68
68
|
<ApplicationStoreProvider store={applicationStore}>
|
|
69
|
-
<LegendDataCubeWebApplication
|
|
69
|
+
<LegendDataCubeWebApplication
|
|
70
|
+
baseUrl={this.baseAddress}
|
|
71
|
+
oidcConfig={this.config.dataCubeOidcConfig}
|
|
72
|
+
/>
|
|
70
73
|
</ApplicationStoreProvider>,
|
|
71
74
|
);
|
|
72
75
|
}
|
|
@@ -23,6 +23,7 @@ import {
|
|
|
23
23
|
assertNonNullable,
|
|
24
24
|
guaranteeNonEmptyString,
|
|
25
25
|
} from '@finos/legend-shared';
|
|
26
|
+
import { type AuthProviderProps } from 'react-oidc-context';
|
|
26
27
|
|
|
27
28
|
export interface LegendDataCubeApplicationConfigurationData
|
|
28
29
|
extends LegendApplicationConfigurationData {
|
|
@@ -36,14 +37,26 @@ export interface LegendDataCubeApplicationConfigurationData
|
|
|
36
37
|
studio?: {
|
|
37
38
|
url: string;
|
|
38
39
|
};
|
|
40
|
+
lakehouse: {
|
|
41
|
+
platformUrl: string;
|
|
42
|
+
};
|
|
43
|
+
oidcConfig?: LegendDataCubeOidcConfig | undefined;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface LegendDataCubeOidcConfig {
|
|
47
|
+
redirectPath: string;
|
|
48
|
+
silentRedirectPath: string;
|
|
49
|
+
authProviderProps: AuthProviderProps;
|
|
39
50
|
}
|
|
40
51
|
|
|
41
52
|
export class LegendDataCubeApplicationConfig extends LegendApplicationConfig {
|
|
42
53
|
readonly engineServerUrl: string;
|
|
43
54
|
readonly depotServerUrl: string;
|
|
55
|
+
readonly lakehousePlatformUrl: string;
|
|
44
56
|
readonly engineQueryServerUrl?: string | undefined;
|
|
45
57
|
readonly queryApplicationUrl?: string | undefined;
|
|
46
58
|
readonly studioApplicationUrl?: string | undefined;
|
|
59
|
+
readonly dataCubeOidcConfig?: LegendDataCubeOidcConfig | undefined;
|
|
47
60
|
|
|
48
61
|
constructor(
|
|
49
62
|
input: LegendApplicationConfigurationInput<LegendDataCubeApplicationConfigurationData>,
|
|
@@ -79,6 +92,18 @@ export class LegendDataCubeApplicationConfig extends LegendApplicationConfig {
|
|
|
79
92
|
),
|
|
80
93
|
);
|
|
81
94
|
|
|
95
|
+
//lakehouse
|
|
96
|
+
assertNonNullable(
|
|
97
|
+
input.configData.lakehouse,
|
|
98
|
+
`Can't configure application: 'lakehouse' field is missing`,
|
|
99
|
+
);
|
|
100
|
+
this.lakehousePlatformUrl = LegendApplicationConfig.resolveAbsoluteUrl(
|
|
101
|
+
guaranteeNonEmptyString(
|
|
102
|
+
input.configData.lakehouse.platformUrl,
|
|
103
|
+
`Can't configure application: 'lakehouse.platformUrl' field is missing or empty`,
|
|
104
|
+
),
|
|
105
|
+
);
|
|
106
|
+
|
|
82
107
|
// query
|
|
83
108
|
if (input.configData.query?.url) {
|
|
84
109
|
this.queryApplicationUrl = LegendApplicationConfig.resolveAbsoluteUrl(
|
|
@@ -91,6 +116,8 @@ export class LegendDataCubeApplicationConfig extends LegendApplicationConfig {
|
|
|
91
116
|
input.configData.studio.url,
|
|
92
117
|
);
|
|
93
118
|
}
|
|
119
|
+
|
|
120
|
+
this.dataCubeOidcConfig = input.configData.oidcConfig;
|
|
94
121
|
}
|
|
95
122
|
getDefaultApplicationStorageKey(): string {
|
|
96
123
|
return 'legend-data-cube';
|
|
@@ -35,6 +35,18 @@ const TEST_DATA__appConfig = {
|
|
|
35
35
|
url: 'https://testStudioUrl',
|
|
36
36
|
instances: [],
|
|
37
37
|
},
|
|
38
|
+
lakehouse: {
|
|
39
|
+
platformUrl: 'https://testLakehousePlatformUrl',
|
|
40
|
+
},
|
|
41
|
+
oidcConfig: {
|
|
42
|
+
redirectPath: '/callback',
|
|
43
|
+
silentRedirectPath: '/callback?silent=true',
|
|
44
|
+
authProviderProps: {
|
|
45
|
+
authority: 'http://localhost:8080/auth',
|
|
46
|
+
client_id: 'test-client-id',
|
|
47
|
+
redirect_uri: '/callback',
|
|
48
|
+
},
|
|
49
|
+
},
|
|
38
50
|
};
|
|
39
51
|
|
|
40
52
|
export const TEST__getTestLegendDataCubeApplicationConfig = (
|
|
@@ -24,6 +24,17 @@ import { observer } from 'mobx-react-lite';
|
|
|
24
24
|
import { LegendDataCubeBuilder } from './builder/LegendDataCubeBuilder.js';
|
|
25
25
|
import { LEGEND_DATA_CUBE_ROUTE_PATTERN } from '../__lib__/LegendDataCubeNavigation.js';
|
|
26
26
|
import { useEffect } from 'react';
|
|
27
|
+
import {
|
|
28
|
+
CubesLoadingIndicator,
|
|
29
|
+
CubesLoadingIndicatorIcon,
|
|
30
|
+
} from '@finos/legend-art';
|
|
31
|
+
import type { LegendDataCubeOidcConfig } from '../application/LegendDataCubeApplicationConfig.js';
|
|
32
|
+
import {
|
|
33
|
+
type AuthProviderProps,
|
|
34
|
+
withAuthenticationRequired,
|
|
35
|
+
AuthProvider,
|
|
36
|
+
} from 'react-oidc-context';
|
|
37
|
+
import type { User } from 'oidc-client-ts';
|
|
27
38
|
|
|
28
39
|
const LegendDataCubeWebApplicationRouter = observer(() => {
|
|
29
40
|
const store = useLegendDataCubeBaseStore();
|
|
@@ -48,16 +59,58 @@ const LegendDataCubeWebApplicationRouter = observer(() => {
|
|
|
48
59
|
);
|
|
49
60
|
});
|
|
50
61
|
|
|
62
|
+
const LegendDataCubeWebProvider: React.FC<{
|
|
63
|
+
baseUrl: string;
|
|
64
|
+
}> = ({ baseUrl }) => {
|
|
65
|
+
return (
|
|
66
|
+
<BrowserEnvironmentProvider baseUrl={baseUrl}>
|
|
67
|
+
<LegendDataCubeFrameworkProvider>
|
|
68
|
+
<LegendDataCubeWebApplicationRouter />
|
|
69
|
+
</LegendDataCubeFrameworkProvider>
|
|
70
|
+
</BrowserEnvironmentProvider>
|
|
71
|
+
);
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
const AuthenticatedLegendDataCubeWebProvider = withAuthenticationRequired(
|
|
75
|
+
LegendDataCubeWebProvider,
|
|
76
|
+
{
|
|
77
|
+
OnRedirecting: () => (
|
|
78
|
+
<CubesLoadingIndicator isLoading={true}>
|
|
79
|
+
<CubesLoadingIndicatorIcon />
|
|
80
|
+
</CubesLoadingIndicator>
|
|
81
|
+
),
|
|
82
|
+
signinRedirectArgs: {
|
|
83
|
+
state: `${window.location.pathname}${window.location.search}`,
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
);
|
|
87
|
+
|
|
51
88
|
export const LegendDataCubeWebApplication = observer(
|
|
52
|
-
(props: {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
89
|
+
(props: {
|
|
90
|
+
baseUrl: string;
|
|
91
|
+
oidcConfig: LegendDataCubeOidcConfig | undefined;
|
|
92
|
+
}) => {
|
|
93
|
+
const { baseUrl, oidcConfig } = props;
|
|
94
|
+
|
|
95
|
+
const onSigninCallback = (_user: User | undefined) => {
|
|
96
|
+
window.location.href = (_user?.state as string | undefined) ?? '/';
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const mergedOIDCConfig: AuthProviderProps | undefined = oidcConfig
|
|
100
|
+
? {
|
|
101
|
+
...oidcConfig.authProviderProps,
|
|
102
|
+
redirect_uri: `${window.location.origin}${oidcConfig.redirectPath}`,
|
|
103
|
+
silent_redirect_uri: `${window.location.origin}${oidcConfig.silentRedirectPath}`,
|
|
104
|
+
onSigninCallback,
|
|
105
|
+
}
|
|
106
|
+
: undefined;
|
|
107
|
+
|
|
108
|
+
return mergedOIDCConfig ? (
|
|
109
|
+
<AuthProvider {...mergedOIDCConfig}>
|
|
110
|
+
<AuthenticatedLegendDataCubeWebProvider baseUrl={baseUrl} />
|
|
111
|
+
</AuthProvider>
|
|
112
|
+
) : (
|
|
113
|
+
<LegendDataCubeWebProvider baseUrl={baseUrl} />
|
|
61
114
|
);
|
|
62
115
|
},
|
|
63
116
|
);
|
|
@@ -33,6 +33,8 @@ import { LocalFileDataCubeSourceBuilderState } from '../../stores/builder/source
|
|
|
33
33
|
import { LocalFileDataCubeSourceBuilder } from './source/LocalFileDataCubeSourceBuilder.js';
|
|
34
34
|
import { UserDefinedFunctionDataCubeSourceBuilderState } from '../../stores/builder/source/UserDefinedFunctionDataCubeSourceBuilderState.js';
|
|
35
35
|
import { UserDefinedFunctionDataCubeSourceBuilder } from './source/UserDefinedFunctionDataCubeSourceBuilder.js';
|
|
36
|
+
import { IngestDefinitionDataCubeSourceBuilderState } from '../../stores/builder/source/IngestDefinitionDataCubeSourceBuilderState.js';
|
|
37
|
+
import { IngestDefinitionDataCubeSourceBuilder } from './source/IngestDefinitionDataCubeSourceBuilder.js';
|
|
36
38
|
|
|
37
39
|
export const LegendDataCubeCreator = observer(() => {
|
|
38
40
|
const store = useLegendDataCubeBuilderStore();
|
|
@@ -74,6 +76,7 @@ export const LegendDataCubeCreator = observer(() => {
|
|
|
74
76
|
LegendDataCubeSourceBuilderType.USER_DEFINED_FUNCTION,
|
|
75
77
|
LegendDataCubeSourceBuilderType.FREEFORM_TDS_EXPRESSION,
|
|
76
78
|
LegendDataCubeSourceBuilderType.LOCAL_FILE,
|
|
79
|
+
LegendDataCubeSourceBuilderType.INGEST_DEFINTION,
|
|
77
80
|
].map((type) => (
|
|
78
81
|
<FormDropdownMenuItem
|
|
79
82
|
key={type}
|
|
@@ -114,6 +117,12 @@ export const LegendDataCubeCreator = observer(() => {
|
|
|
114
117
|
store={store}
|
|
115
118
|
/>
|
|
116
119
|
)}
|
|
120
|
+
{sourceBuilder instanceof
|
|
121
|
+
IngestDefinitionDataCubeSourceBuilderState && (
|
|
122
|
+
<IngestDefinitionDataCubeSourceBuilder
|
|
123
|
+
sourceBuilder={sourceBuilder}
|
|
124
|
+
/>
|
|
125
|
+
)}
|
|
117
126
|
</div>
|
|
118
127
|
</div>
|
|
119
128
|
</div>
|