@finos/legend-application-query 13.4.21 → 13.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.
Files changed (64) hide show
  1. package/lib/__lib__/DSL_DataSpace_LegendQueryNavigation.d.ts +1 -1
  2. package/lib/__lib__/DSL_DataSpace_LegendQueryNavigation.d.ts.map +1 -1
  3. package/lib/__lib__/DSL_DataSpace_LegendQueryNavigation.js +4 -4
  4. package/lib/__lib__/DSL_DataSpace_LegendQueryNavigation.js.map +1 -1
  5. package/lib/__lib__/LegendQueryNavigation.d.ts +1 -0
  6. package/lib/__lib__/LegendQueryNavigation.d.ts.map +1 -1
  7. package/lib/__lib__/LegendQueryNavigation.js +1 -0
  8. package/lib/__lib__/LegendQueryNavigation.js.map +1 -1
  9. package/lib/components/Core_LegendQueryApplicationPlugin.d.ts.map +1 -1
  10. package/lib/components/Core_LegendQueryApplicationPlugin.js +20 -11
  11. package/lib/components/Core_LegendQueryApplicationPlugin.js.map +1 -1
  12. package/lib/components/LegendQueryWebApplication.d.ts.map +1 -1
  13. package/lib/components/LegendQueryWebApplication.js +15 -14
  14. package/lib/components/LegendQueryWebApplication.js.map +1 -1
  15. package/lib/components/QueryEditor.d.ts.map +1 -1
  16. package/lib/components/QueryEditor.js +2 -1
  17. package/lib/components/QueryEditor.js.map +1 -1
  18. package/lib/components/data-space/DataSpaceQueryCreator.d.ts.map +1 -1
  19. package/lib/components/data-space/DataSpaceQueryCreator.js +25 -8
  20. package/lib/components/data-space/DataSpaceQueryCreator.js.map +1 -1
  21. package/lib/components/data-space/DataSpaceQuerySetup.d.ts +0 -3
  22. package/lib/components/data-space/DataSpaceQuerySetup.d.ts.map +1 -1
  23. package/lib/components/data-space/DataSpaceQuerySetup.js +2 -12
  24. package/lib/components/data-space/DataSpaceQuerySetup.js.map +1 -1
  25. package/lib/index.css +1 -1
  26. package/lib/index.d.ts +2 -1
  27. package/lib/index.d.ts.map +1 -1
  28. package/lib/index.js +2 -1
  29. package/lib/index.js.map +1 -1
  30. package/lib/package.json +4 -3
  31. package/lib/stores/QueryEditorStore.d.ts +3 -4
  32. package/lib/stores/QueryEditorStore.d.ts.map +1 -1
  33. package/lib/stores/QueryEditorStore.js +54 -62
  34. package/lib/stores/QueryEditorStore.js.map +1 -1
  35. package/lib/stores/data-space/DataSpaceQueryBuilderHelper.d.ts +23 -0
  36. package/lib/stores/data-space/DataSpaceQueryBuilderHelper.d.ts.map +1 -0
  37. package/lib/stores/data-space/DataSpaceQueryBuilderHelper.js +39 -0
  38. package/lib/stores/data-space/DataSpaceQueryBuilderHelper.js.map +1 -0
  39. package/lib/stores/data-space/DataSpaceQueryCreatorStore.d.ts +35 -12
  40. package/lib/stores/data-space/DataSpaceQueryCreatorStore.d.ts.map +1 -1
  41. package/lib/stores/data-space/DataSpaceQueryCreatorStore.js +189 -86
  42. package/lib/stores/data-space/DataSpaceQueryCreatorStore.js.map +1 -1
  43. package/lib/stores/data-space/DataSpaceQuerySetupState.d.ts +3 -20
  44. package/lib/stores/data-space/DataSpaceQuerySetupState.d.ts.map +1 -1
  45. package/lib/stores/data-space/DataSpaceQuerySetupState.js +8 -81
  46. package/lib/stores/data-space/DataSpaceQuerySetupState.js.map +1 -1
  47. package/lib/stores/data-space/DataSpaceTemplateQueryCreatorStore.d.ts.map +1 -1
  48. package/lib/stores/data-space/DataSpaceTemplateQueryCreatorStore.js +8 -8
  49. package/lib/stores/data-space/DataSpaceTemplateQueryCreatorStore.js.map +1 -1
  50. package/package.json +14 -13
  51. package/src/__lib__/DSL_DataSpace_LegendQueryNavigation.ts +6 -4
  52. package/src/__lib__/LegendQueryNavigation.ts +1 -0
  53. package/src/components/Core_LegendQueryApplicationPlugin.tsx +25 -17
  54. package/src/components/LegendQueryWebApplication.tsx +30 -27
  55. package/src/components/QueryEditor.tsx +2 -1
  56. package/src/components/data-space/DataSpaceQueryCreator.tsx +36 -18
  57. package/src/components/data-space/DataSpaceQuerySetup.tsx +2 -36
  58. package/src/index.ts +4 -2
  59. package/src/stores/QueryEditorStore.ts +109 -157
  60. package/src/stores/data-space/DataSpaceQueryBuilderHelper.ts +107 -0
  61. package/src/stores/data-space/DataSpaceQueryCreatorStore.ts +302 -173
  62. package/src/stores/data-space/DataSpaceQuerySetupState.ts +8 -156
  63. package/src/stores/data-space/DataSpaceTemplateQueryCreatorStore.ts +11 -19
  64. package/tsconfig.json +1 -0
@@ -68,8 +68,6 @@ import {
68
68
  QueryExplicitExecutionContext,
69
69
  } from '@finos/legend-graph';
70
70
  import {
71
- EXTERNAL_APPLICATION_NAVIGATION__generateStudioProjectViewUrl,
72
- EXTERNAL_APPLICATION_NAVIGATION__generateStudioSDLCProjectViewUrl,
73
71
  generateExistingQueryEditorRoute,
74
72
  generateMappingQueryCreatorRoute,
75
73
  generateServiceQueryCreatorRoute,
@@ -79,7 +77,6 @@ import {
79
77
  type Entity,
80
78
  type ProjectGAVCoordinates,
81
79
  type EntitiesWithOrigin,
82
- parseProjectIdentifier,
83
80
  } from '@finos/legend-storage';
84
81
  import {
85
82
  type DepotServerClient,
@@ -111,7 +108,6 @@ import {
111
108
  import { LegendQueryUserDataHelper } from '../__lib__/LegendQueryUserDataHelper.js';
112
109
  import { LegendQueryTelemetryHelper } from '../__lib__/LegendQueryTelemetryHelper.js';
113
110
  import {
114
- DataSpaceProjectInfo,
115
111
  DataSpaceQueryBuilderState,
116
112
  type DataSpaceInfo,
117
113
  } from '@finos/legend-extension-dsl-data-space/application';
@@ -124,58 +120,7 @@ import {
124
120
  } from '@finos/legend-extension-dsl-data-space/graph';
125
121
  import { generateDataSpaceQueryCreatorRoute } from '../__lib__/DSL_DataSpace_LegendQueryNavigation.js';
126
122
  import { hasDataSpaceInfoBeenVisited } from '../__lib__/LegendQueryUserDataSpaceHelper.js';
127
-
128
- export const createViewProjectHandler =
129
- (applicationStore: LegendQueryApplicationStore) =>
130
- (
131
- groupId: string,
132
- artifactId: string,
133
- versionId: string,
134
- entityPath: string | undefined,
135
- ): void =>
136
- applicationStore.navigationService.navigator.visitAddress(
137
- EXTERNAL_APPLICATION_NAVIGATION__generateStudioProjectViewUrl(
138
- applicationStore.config.studioApplicationUrl,
139
- groupId,
140
- artifactId,
141
- versionId,
142
- entityPath,
143
- ),
144
- );
145
-
146
- export const createViewSDLCProjectHandler =
147
- (
148
- applicationStore: LegendQueryApplicationStore,
149
- depotServerClient: DepotServerClient,
150
- ) =>
151
- async (
152
- groupId: string,
153
- artifactId: string,
154
- entityPath: string | undefined,
155
- ): Promise<void> => {
156
- // fetch project data
157
- const project = StoreProjectData.serialization.fromJson(
158
- await depotServerClient.getProject(groupId, artifactId),
159
- );
160
- // find the matching SDLC instance
161
- const projectIDPrefix = parseProjectIdentifier(project.projectId).prefix;
162
- const matchingSDLCEntry = applicationStore.config.studioInstances.find(
163
- (entry) => entry.sdlcProjectIDPrefix === projectIDPrefix,
164
- );
165
- if (matchingSDLCEntry) {
166
- applicationStore.navigationService.navigator.visitAddress(
167
- EXTERNAL_APPLICATION_NAVIGATION__generateStudioSDLCProjectViewUrl(
168
- matchingSDLCEntry.url,
169
- project.projectId,
170
- entityPath,
171
- ),
172
- );
173
- } else {
174
- applicationStore.notificationService.notifyWarning(
175
- `Can't find the corresponding SDLC instance to view the SDLC project`,
176
- );
177
- }
178
- };
123
+ import { createDataSpaceDepoRepo } from './data-space/DataSpaceQueryBuilderHelper.js';
179
124
 
180
125
  export interface QueryPersistConfiguration {
181
126
  defaultName?: string | undefined;
@@ -405,6 +350,10 @@ export abstract class QueryEditorStore {
405
350
  return false;
406
351
  }
407
352
 
353
+ get canPersistToSavedQuery(): boolean {
354
+ return true;
355
+ }
356
+
408
357
  setExistingQueryName(val: string | undefined): void {
409
358
  this.existingQueryName = val;
410
359
  }
@@ -421,7 +370,7 @@ export abstract class QueryEditorStore {
421
370
  return this.queryCreatorState.createQueryState.isInProgress;
422
371
  }
423
372
 
424
- abstract getProjectInfo(): ProjectGAVCoordinates;
373
+ abstract getProjectInfo(): ProjectGAVCoordinates | undefined;
425
374
  /**
426
375
  * Set up the editor state before building the graph
427
376
  */
@@ -498,7 +447,7 @@ export abstract class QueryEditorStore {
498
447
  abstract getPersistConfiguration(
499
448
  lambda: RawLambda,
500
449
  options?: { update?: boolean | undefined },
501
- ): QueryPersistConfiguration;
450
+ ): QueryPersistConfiguration | undefined;
502
451
 
503
452
  *initialize(): GeneratorFn<void> {
504
453
  if (!this.initState.isInInitialState) {
@@ -587,91 +536,101 @@ export abstract class QueryEditorStore {
587
536
  *buildGraph(): GeneratorFn<void> {
588
537
  const stopWatch = new StopWatch();
589
538
 
590
- const { groupId, artifactId, versionId } = this.getProjectInfo();
539
+ const projectInfo = this.getProjectInfo();
591
540
 
592
- // fetch project data
593
- const project = StoreProjectData.serialization.fromJson(
594
- (yield this.depotServerClient.getProject(
595
- groupId,
596
- artifactId,
597
- )) as PlainObject<StoreProjectData>,
598
- );
541
+ if (projectInfo) {
542
+ const { groupId, artifactId, versionId } = projectInfo;
599
543
 
600
- // initialize system
601
- stopWatch.record();
602
- yield this.graphManagerState.initializeSystem();
603
- stopWatch.record(GRAPH_MANAGER_EVENT.INITIALIZE_GRAPH_SYSTEM__SUCCESS);
604
-
605
- // fetch entities
606
- stopWatch.record();
607
- this.initState.setMessage(`Fetching entities...`);
608
- const entities = (yield this.depotServerClient.getEntities(
609
- project,
610
- versionId,
611
- )) as Entity[];
612
- this.initState.setMessage(undefined);
613
- stopWatch.record(GRAPH_MANAGER_EVENT.FETCH_GRAPH_ENTITIES__SUCCESS);
614
-
615
- // fetch and build dependencies
616
- stopWatch.record();
617
- const dependencyManager =
618
- this.graphManagerState.graphManager.createDependencyManager();
619
- this.graphManagerState.graph.dependencyManager = dependencyManager;
620
- this.graphManagerState.dependenciesBuildState.setMessage(
621
- `Fetching dependencies...`,
622
- );
623
- const dependencyEntitiesIndex = (yield flowResult(
624
- this.depotServerClient.getIndexedDependencyEntities(project, versionId),
625
- )) as Map<string, EntitiesWithOrigin>;
626
- stopWatch.record(GRAPH_MANAGER_EVENT.FETCH_GRAPH_DEPENDENCIES__SUCCESS);
627
-
628
- const dependency_buildReport = createGraphBuilderReport();
629
- yield this.graphManagerState.graphManager.buildDependencies(
630
- this.graphManagerState.coreModel,
631
- this.graphManagerState.systemModel,
632
- dependencyManager,
633
- dependencyEntitiesIndex,
634
- this.graphManagerState.dependenciesBuildState,
635
- {},
636
- dependency_buildReport,
637
- );
638
- dependency_buildReport.timings[
639
- GRAPH_MANAGER_EVENT.FETCH_GRAPH_DEPENDENCIES__SUCCESS
640
- ] = stopWatch.getRecord(
641
- GRAPH_MANAGER_EVENT.FETCH_GRAPH_DEPENDENCIES__SUCCESS,
642
- );
544
+ // fetch project data
545
+ const project = StoreProjectData.serialization.fromJson(
546
+ (yield this.depotServerClient.getProject(
547
+ groupId,
548
+ artifactId,
549
+ )) as PlainObject<StoreProjectData>,
550
+ );
643
551
 
644
- // build graph
645
- const graph_buildReport = createGraphBuilderReport();
646
- yield this.graphManagerState.graphManager.buildGraph(
647
- this.graphManagerState.graph,
648
- entities,
649
- this.graphManagerState.graphBuildState,
650
- {
651
- origin: new LegendSDLC(groupId, artifactId, resolveVersion(versionId)),
652
- },
653
- graph_buildReport,
654
- );
655
- graph_buildReport.timings[
656
- GRAPH_MANAGER_EVENT.FETCH_GRAPH_ENTITIES__SUCCESS
657
- ] = stopWatch.getRecord(GRAPH_MANAGER_EVENT.FETCH_GRAPH_ENTITIES__SUCCESS);
658
-
659
- // report
660
- stopWatch.record(GRAPH_MANAGER_EVENT.INITIALIZE_GRAPH__SUCCESS);
661
- const graphBuilderReportData = {
662
- timings:
663
- this.applicationStore.timeService.finalizeTimingsRecord(stopWatch),
664
- dependencies: dependency_buildReport,
665
- dependenciesCount:
666
- this.graphManagerState.graph.dependencyManager.numberOfDependencies,
667
- graph: graph_buildReport,
668
- };
669
- this.logBuildGraphMetrics(graphBuilderReportData);
552
+ // initialize system
553
+ stopWatch.record();
554
+ yield this.graphManagerState.initializeSystem();
555
+ stopWatch.record(GRAPH_MANAGER_EVENT.INITIALIZE_GRAPH_SYSTEM__SUCCESS);
670
556
 
671
- this.applicationStore.logService.info(
672
- LogEvent.create(GRAPH_MANAGER_EVENT.INITIALIZE_GRAPH__SUCCESS),
673
- graphBuilderReportData,
674
- );
557
+ // fetch entities
558
+ stopWatch.record();
559
+ this.initState.setMessage(`Fetching entities...`);
560
+ const entities = (yield this.depotServerClient.getEntities(
561
+ project,
562
+ versionId,
563
+ )) as Entity[];
564
+ this.initState.setMessage(undefined);
565
+ stopWatch.record(GRAPH_MANAGER_EVENT.FETCH_GRAPH_ENTITIES__SUCCESS);
566
+
567
+ // fetch and build dependencies
568
+ stopWatch.record();
569
+ const dependencyManager =
570
+ this.graphManagerState.graphManager.createDependencyManager();
571
+ this.graphManagerState.graph.dependencyManager = dependencyManager;
572
+ this.graphManagerState.dependenciesBuildState.setMessage(
573
+ `Fetching dependencies...`,
574
+ );
575
+ const dependencyEntitiesIndex = (yield flowResult(
576
+ this.depotServerClient.getIndexedDependencyEntities(project, versionId),
577
+ )) as Map<string, EntitiesWithOrigin>;
578
+ stopWatch.record(GRAPH_MANAGER_EVENT.FETCH_GRAPH_DEPENDENCIES__SUCCESS);
579
+
580
+ const dependency_buildReport = createGraphBuilderReport();
581
+ yield this.graphManagerState.graphManager.buildDependencies(
582
+ this.graphManagerState.coreModel,
583
+ this.graphManagerState.systemModel,
584
+ dependencyManager,
585
+ dependencyEntitiesIndex,
586
+ this.graphManagerState.dependenciesBuildState,
587
+ {},
588
+ dependency_buildReport,
589
+ );
590
+ dependency_buildReport.timings[
591
+ GRAPH_MANAGER_EVENT.FETCH_GRAPH_DEPENDENCIES__SUCCESS
592
+ ] = stopWatch.getRecord(
593
+ GRAPH_MANAGER_EVENT.FETCH_GRAPH_DEPENDENCIES__SUCCESS,
594
+ );
595
+
596
+ // build graph
597
+ const graph_buildReport = createGraphBuilderReport();
598
+ yield this.graphManagerState.graphManager.buildGraph(
599
+ this.graphManagerState.graph,
600
+ entities,
601
+ this.graphManagerState.graphBuildState,
602
+ {
603
+ origin: new LegendSDLC(
604
+ groupId,
605
+ artifactId,
606
+ resolveVersion(versionId),
607
+ ),
608
+ },
609
+ graph_buildReport,
610
+ );
611
+ graph_buildReport.timings[
612
+ GRAPH_MANAGER_EVENT.FETCH_GRAPH_ENTITIES__SUCCESS
613
+ ] = stopWatch.getRecord(
614
+ GRAPH_MANAGER_EVENT.FETCH_GRAPH_ENTITIES__SUCCESS,
615
+ );
616
+
617
+ // report
618
+ stopWatch.record(GRAPH_MANAGER_EVENT.INITIALIZE_GRAPH__SUCCESS);
619
+ const graphBuilderReportData = {
620
+ timings:
621
+ this.applicationStore.timeService.finalizeTimingsRecord(stopWatch),
622
+ dependencies: dependency_buildReport,
623
+ dependenciesCount:
624
+ this.graphManagerState.graph.dependencyManager.numberOfDependencies,
625
+ graph: graph_buildReport,
626
+ };
627
+ this.logBuildGraphMetrics(graphBuilderReportData);
628
+
629
+ this.applicationStore.logService.info(
630
+ LogEvent.create(GRAPH_MANAGER_EVENT.INITIALIZE_GRAPH__SUCCESS),
631
+ graphBuilderReportData,
632
+ );
633
+ }
675
634
  }
676
635
  }
677
636
 
@@ -1231,20 +1190,10 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
1231
1190
  } catch {
1232
1191
  // do nothing
1233
1192
  }
1234
- const projectInfo = new DataSpaceProjectInfo(
1235
- query.groupId,
1236
- query.artifactId,
1237
- query.versionId,
1238
- createViewProjectHandler(this.applicationStore),
1239
- createViewSDLCProjectHandler(
1240
- this.applicationStore,
1241
- this.depotServerClient,
1242
- ),
1243
- );
1244
1193
  const sourceInfo = {
1245
- groupId: projectInfo.groupId,
1246
- artifactId: projectInfo.artifactId,
1247
- versionId: projectInfo.versionId,
1194
+ groupId: query.groupId,
1195
+ artifactId: query.artifactId,
1196
+ versionId: query.versionId,
1248
1197
  dataSpace: dataSpace.path,
1249
1198
  };
1250
1199
  const visitedDataSpaces =
@@ -1254,11 +1203,18 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
1254
1203
  const dataSpaceQueryBuilderState = new DataSpaceQueryBuilderState(
1255
1204
  this.applicationStore,
1256
1205
  this.graphManagerState,
1257
- this.depotServerClient,
1258
1206
  QueryBuilderDataBrowserWorkflow.INSTANCE,
1259
1207
  new QueryBuilderActionConfig_QueryApplication(this),
1260
1208
  dataSpace,
1261
1209
  matchingExecutionContext,
1210
+ createDataSpaceDepoRepo(
1211
+ this,
1212
+ query.groupId,
1213
+ query.artifactId,
1214
+ query.versionId,
1215
+ (dataSpaceInfo: DataSpaceInfo) =>
1216
+ hasDataSpaceInfoBeenVisited(dataSpaceInfo, visitedDataSpaces),
1217
+ ),
1262
1218
  (dataSpaceInfo: DataSpaceInfo) => {
1263
1219
  if (dataSpaceInfo.defaultExecutionContext) {
1264
1220
  const proceed = (): void =>
@@ -1322,16 +1278,12 @@ export class ExistingQueryEditorStore extends QueryEditorStore {
1322
1278
  );
1323
1279
  }
1324
1280
  },
1325
- true,
1326
1281
  dataSpaceAnalysisResult,
1327
1282
  undefined,
1328
1283
  undefined,
1329
1284
  undefined,
1330
- projectInfo,
1331
1285
  this.applicationStore.config.options.queryBuilderConfig,
1332
1286
  sourceInfo,
1333
- (dataSpaceInfo: DataSpaceInfo) =>
1334
- hasDataSpaceInfoBeenVisited(dataSpaceInfo, visitedDataSpaces),
1335
1287
  );
1336
1288
  const mappingModelCoverageAnalysisResult =
1337
1289
  dataSpaceAnalysisResult?.executionContextsIndex.get(
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import {
18
+ StoreProjectData,
19
+ type DepotServerClient,
20
+ } from '@finos/legend-server-depot';
21
+ import {
22
+ EXTERNAL_APPLICATION_NAVIGATION__generateStudioProjectViewUrl,
23
+ EXTERNAL_APPLICATION_NAVIGATION__generateStudioSDLCProjectViewUrl,
24
+ } from '../../__lib__/LegendQueryNavigation.js';
25
+ import type { LegendQueryApplicationStore } from '../LegendQueryBaseStore.js';
26
+ import { parseProjectIdentifier } from '@finos/legend-storage';
27
+ import type { QueryEditorStore } from '../QueryEditorStore.js';
28
+ import {
29
+ DataSpacesDepotRepository,
30
+ type DataSpaceInfo,
31
+ } from '@finos/legend-extension-dsl-data-space/application';
32
+
33
+ export const createViewProjectHandler =
34
+ (applicationStore: LegendQueryApplicationStore) =>
35
+ (
36
+ groupId: string,
37
+ artifactId: string,
38
+ versionId: string,
39
+ entityPath: string | undefined,
40
+ ): void =>
41
+ applicationStore.navigationService.navigator.visitAddress(
42
+ EXTERNAL_APPLICATION_NAVIGATION__generateStudioProjectViewUrl(
43
+ applicationStore.config.studioApplicationUrl,
44
+ groupId,
45
+ artifactId,
46
+ versionId,
47
+ entityPath,
48
+ ),
49
+ );
50
+
51
+ export const createViewSDLCProjectHandler =
52
+ (
53
+ applicationStore: LegendQueryApplicationStore,
54
+ depotServerClient: DepotServerClient,
55
+ ) =>
56
+ async (
57
+ groupId: string,
58
+ artifactId: string,
59
+ entityPath: string | undefined,
60
+ ): Promise<void> => {
61
+ // fetch project data
62
+ const project = StoreProjectData.serialization.fromJson(
63
+ await depotServerClient.getProject(groupId, artifactId),
64
+ );
65
+ // find the matching SDLC instance
66
+ const projectIDPrefix = parseProjectIdentifier(project.projectId).prefix;
67
+ const matchingSDLCEntry = applicationStore.config.studioInstances.find(
68
+ (entry) => entry.sdlcProjectIDPrefix === projectIDPrefix,
69
+ );
70
+ if (matchingSDLCEntry) {
71
+ applicationStore.navigationService.navigator.visitAddress(
72
+ EXTERNAL_APPLICATION_NAVIGATION__generateStudioSDLCProjectViewUrl(
73
+ matchingSDLCEntry.url,
74
+ project.projectId,
75
+ entityPath,
76
+ ),
77
+ );
78
+ } else {
79
+ applicationStore.notificationService.notifyWarning(
80
+ `Can't find the corresponding SDLC instance to view the SDLC project`,
81
+ );
82
+ }
83
+ };
84
+
85
+ export const createDataSpaceDepoRepo = (
86
+ editorStore: QueryEditorStore,
87
+ groupId: string,
88
+ artifactId: string,
89
+ versionId: string,
90
+ prioritizeDataSpaceFunc: ((val: DataSpaceInfo) => boolean) | undefined,
91
+ ): DataSpacesDepotRepository =>
92
+ new DataSpacesDepotRepository(
93
+ editorStore.depotServerClient,
94
+ editorStore.applicationStore,
95
+ editorStore.graphManagerState,
96
+ {
97
+ groupId,
98
+ artifactId,
99
+ versionId,
100
+ },
101
+ createViewProjectHandler(editorStore.applicationStore),
102
+ createViewSDLCProjectHandler(
103
+ editorStore.applicationStore,
104
+ editorStore.depotServerClient,
105
+ ),
106
+ prioritizeDataSpaceFunc,
107
+ );