@finos/legend-application-studio 28.21.3 → 28.21.5

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 (66) hide show
  1. package/lib/components/editor/editor-group/data-editor/EmbeddedDataEditor.d.ts +1 -1
  2. package/lib/components/editor/editor-group/data-editor/EmbeddedDataEditor.d.ts.map +1 -1
  3. package/lib/components/editor/editor-group/data-editor/EmbeddedDataEditor.js +3 -3
  4. package/lib/components/editor/editor-group/data-editor/EmbeddedDataEditor.js.map +1 -1
  5. package/lib/components/editor/editor-group/data-editor/RelationElementsDataEditor.d.ts +3 -0
  6. package/lib/components/editor/editor-group/data-editor/RelationElementsDataEditor.d.ts.map +1 -1
  7. package/lib/components/editor/editor-group/data-editor/RelationElementsDataEditor.js +72 -52
  8. package/lib/components/editor/editor-group/data-editor/RelationElementsDataEditor.js.map +1 -1
  9. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.d.ts.map +1 -1
  10. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.js +22 -1
  11. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.js.map +1 -1
  12. package/lib/components/editor/editor-group/dataProduct/testable/DataProductTestableEditor.d.ts +23 -0
  13. package/lib/components/editor/editor-group/dataProduct/testable/DataProductTestableEditor.d.ts.map +1 -0
  14. package/lib/components/editor/editor-group/dataProduct/testable/DataProductTestableEditor.js +267 -0
  15. package/lib/components/editor/editor-group/dataProduct/testable/DataProductTestableEditor.js.map +1 -0
  16. package/lib/components/editor/editor-group/function-activator/testable/FunctionTestableEditor.d.ts.map +1 -1
  17. package/lib/components/editor/editor-group/function-activator/testable/FunctionTestableEditor.js +113 -75
  18. package/lib/components/editor/editor-group/function-activator/testable/FunctionTestableEditor.js.map +1 -1
  19. package/lib/components/editor/editor-group/testable/TestableSharedComponents.d.ts.map +1 -1
  20. package/lib/components/editor/editor-group/testable/TestableSharedComponents.js +39 -5
  21. package/lib/components/editor/editor-group/testable/TestableSharedComponents.js.map +1 -1
  22. package/lib/components/editor/side-bar/DevMetadataPanel.d.ts.map +1 -1
  23. package/lib/components/editor/side-bar/DevMetadataPanel.js +37 -6
  24. package/lib/components/editor/side-bar/DevMetadataPanel.js.map +1 -1
  25. package/lib/index.css +2 -2
  26. package/lib/index.css.map +1 -1
  27. package/lib/package.json +1 -1
  28. package/lib/stores/editor/editor-state/element-editor-state/data/EmbeddedDataState.d.ts +17 -2
  29. package/lib/stores/editor/editor-state/element-editor-state/data/EmbeddedDataState.d.ts.map +1 -1
  30. package/lib/stores/editor/editor-state/element-editor-state/data/EmbeddedDataState.js +56 -49
  31. package/lib/stores/editor/editor-state/element-editor-state/data/EmbeddedDataState.js.map +1 -1
  32. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.d.ts +4 -1
  33. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.d.ts.map +1 -1
  34. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js +4 -0
  35. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js.map +1 -1
  36. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.d.ts +113 -0
  37. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.d.ts.map +1 -0
  38. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.js +647 -0
  39. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.js.map +1 -0
  40. package/lib/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.d.ts +18 -4
  41. package/lib/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.d.ts.map +1 -1
  42. package/lib/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.js +214 -53
  43. package/lib/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.js.map +1 -1
  44. package/lib/stores/editor/editor-state/element-editor-state/testable/TestAssertionState.d.ts +17 -1
  45. package/lib/stores/editor/editor-state/element-editor-state/testable/TestAssertionState.d.ts.map +1 -1
  46. package/lib/stores/editor/editor-state/element-editor-state/testable/TestAssertionState.js +46 -1
  47. package/lib/stores/editor/editor-state/element-editor-state/testable/TestAssertionState.js.map +1 -1
  48. package/lib/stores/editor/sidebar-state/dev-metadata/DevMetadataState.d.ts +9 -0
  49. package/lib/stores/editor/sidebar-state/dev-metadata/DevMetadataState.d.ts.map +1 -1
  50. package/lib/stores/editor/sidebar-state/dev-metadata/DevMetadataState.js +55 -0
  51. package/lib/stores/editor/sidebar-state/dev-metadata/DevMetadataState.js.map +1 -1
  52. package/package.json +16 -16
  53. package/src/components/editor/editor-group/data-editor/EmbeddedDataEditor.tsx +3 -0
  54. package/src/components/editor/editor-group/data-editor/RelationElementsDataEditor.tsx +331 -231
  55. package/src/components/editor/editor-group/dataProduct/DataProductEditor.tsx +32 -0
  56. package/src/components/editor/editor-group/dataProduct/testable/DataProductTestableEditor.tsx +935 -0
  57. package/src/components/editor/editor-group/function-activator/testable/FunctionTestableEditor.tsx +425 -308
  58. package/src/components/editor/editor-group/testable/TestableSharedComponents.tsx +160 -15
  59. package/src/components/editor/side-bar/DevMetadataPanel.tsx +194 -10
  60. package/src/stores/editor/editor-state/element-editor-state/data/EmbeddedDataState.ts +82 -51
  61. package/src/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.ts +4 -0
  62. package/src/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.ts +927 -0
  63. package/src/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.ts +303 -72
  64. package/src/stores/editor/editor-state/element-editor-state/testable/TestAssertionState.ts +66 -0
  65. package/src/stores/editor/sidebar-state/dev-metadata/DevMetadataState.ts +76 -0
  66. package/tsconfig.json +2 -0
@@ -20,6 +20,7 @@ import {
20
20
  assertNonNullable,
21
21
  assertTrue,
22
22
  type GeneratorFn,
23
+ type PlainObject,
23
24
  } from '@finos/legend-shared';
24
25
  import type { EditorStore } from '../../EditorStore.js';
25
26
  import { action, flow, makeObservable, observable } from 'mobx';
@@ -27,14 +28,24 @@ import {
27
28
  type DeployProjectResponse,
28
29
  MetadataRequestOptions,
29
30
  } from '@finos/legend-graph';
31
+ import type { Entity } from '@finos/legend-storage';
30
32
  import { LegendStudioTelemetryHelper } from '../../../../__lib__/LegendStudioTelemetryHelper.js';
31
33
 
34
+ export const DEV_SNAPSHOT_VERSION = '1.0.0-SNAPSHOT';
35
+
32
36
  export class DevMetadataState {
33
37
  readonly editorStore: EditorStore;
34
38
  result: DeployProjectResponse | undefined;
35
39
  options: MetadataRequestOptions = new MetadataRequestOptions();
36
40
  pushState = ActionState.create();
37
41
 
42
+ // Compare-with-dev state
43
+ compareState = ActionState.create();
44
+ currentWorkspaceCode: string | undefined;
45
+ snapshotCode: string | undefined;
46
+ snapshotNotAvailable = false;
47
+ isCompareModalOpen = false;
48
+
38
49
  constructor(editorStore: EditorStore) {
39
50
  this.editorStore = editorStore;
40
51
 
@@ -43,6 +54,14 @@ export class DevMetadataState {
43
54
  push: flow,
44
55
  options: observable,
45
56
  setOptions: action,
57
+ compareState: observable,
58
+ currentWorkspaceCode: observable,
59
+ snapshotCode: observable,
60
+ snapshotNotAvailable: observable,
61
+ isCompareModalOpen: observable,
62
+ openCompareModal: action,
63
+ closeCompareModal: action,
64
+ compareWithSnapshot: flow,
46
65
  });
47
66
  }
48
67
 
@@ -50,6 +69,14 @@ export class DevMetadataState {
50
69
  this.options = options;
51
70
  }
52
71
 
72
+ openCompareModal(): void {
73
+ this.isCompareModalOpen = true;
74
+ }
75
+
76
+ closeCompareModal(): void {
77
+ this.isCompareModalOpen = false;
78
+ }
79
+
53
80
  get projectGAV(): { groupId: string; artifactId: string } | undefined {
54
81
  const currentProjectConfiguration =
55
82
  this.editorStore.projectConfigurationEditorState.projectConfiguration;
@@ -62,6 +89,55 @@ export class DevMetadataState {
62
89
  return undefined;
63
90
  }
64
91
 
92
+ *compareWithSnapshot(): GeneratorFn<void> {
93
+ try {
94
+ this.compareState.inProgress();
95
+ this.snapshotNotAvailable = false;
96
+ this.currentWorkspaceCode = undefined;
97
+ this.snapshotCode = undefined;
98
+ const gav = this.projectGAV;
99
+ assertNonNullable(gav, 'Project configuration is required to compare');
100
+ const graphManager = this.editorStore.graphManagerState.graphManager;
101
+
102
+ // 1) Current workspace -> Pure code (same as toggling to text mode)
103
+ const currentCode = (yield graphManager.graphToPureCode(
104
+ this.editorStore.graphManagerState.graph,
105
+ { pretty: true, excludeUnknown: true },
106
+ )) as string;
107
+ this.currentWorkspaceCode = currentCode;
108
+
109
+ // 2) Snapshot from depot -> Pure code; if the call fails we treat
110
+ // it as "nothing deployed yet"
111
+ let snapshotEntities: Entity[] | undefined;
112
+ try {
113
+ const entitiesJson =
114
+ (yield this.editorStore.depotServerClient.getVersionEntities(
115
+ gav.groupId,
116
+ gav.artifactId,
117
+ DEV_SNAPSHOT_VERSION,
118
+ )) as PlainObject<Entity>[];
119
+ snapshotEntities = entitiesJson as unknown as Entity[];
120
+ } catch {
121
+ this.snapshotNotAvailable = true;
122
+ this.compareState.complete();
123
+ return;
124
+ }
125
+
126
+ const snapshotCode = (yield graphManager.entitiesToPureCode(
127
+ snapshotEntities,
128
+ { pretty: true },
129
+ )) as string;
130
+ this.snapshotCode = snapshotCode;
131
+ this.compareState.complete();
132
+ } catch (error) {
133
+ assertErrorThrown(error);
134
+ this.editorStore.applicationStore.notificationService.notifyError(
135
+ `Error comparing with dev snapshot: ${error.message}`,
136
+ );
137
+ this.compareState.fail();
138
+ }
139
+ }
140
+
65
141
  *push(): GeneratorFn<void> {
66
142
  try {
67
143
  this.result = undefined;
package/tsconfig.json CHANGED
@@ -133,6 +133,7 @@
133
133
  "./src/stores/editor/editor-state/element-editor-state/data/DataEditorState.ts",
134
134
  "./src/stores/editor/editor-state/element-editor-state/data/EmbeddedDataState.ts",
135
135
  "./src/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.ts",
136
+ "./src/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.ts",
136
137
  "./src/stores/editor/editor-state/element-editor-state/external-format/DSL_ExternalFormat_BindingEditorState.ts",
137
138
  "./src/stores/editor/editor-state/element-editor-state/external-format/DSL_ExternalFormat_SchemaSetEditorState.ts",
138
139
  "./src/stores/editor/editor-state/element-editor-state/function-activator/HostedServiceFunctionActivatorEditorState.ts",
@@ -264,6 +265,7 @@
264
265
  "./src/components/editor/editor-group/data-editor/RelationElementsDataEditor.tsx",
265
266
  "./src/components/editor/editor-group/data-editor/RelationalCSVDataEditor.tsx",
266
267
  "./src/components/editor/editor-group/dataProduct/DataProductEditor.tsx",
268
+ "./src/components/editor/editor-group/dataProduct/testable/DataProductTestableEditor.tsx",
267
269
  "./src/components/editor/editor-group/database-editor/DatabaseAnnotationDisplay.tsx",
268
270
  "./src/components/editor/editor-group/database-editor/DatabaseDiagramCanvas.tsx",
269
271
  "./src/components/editor/editor-group/database-editor/DatabaseEditor.tsx",