@finos/legend-extension-dsl-data-space 9.0.48 → 9.1.1

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 (142) hide show
  1. package/lib/DSL_DataSpace_Const.d.ts +1 -0
  2. package/lib/DSL_DataSpace_Const.d.ts.map +1 -1
  3. package/lib/DSL_DataSpace_Const.js +2 -1
  4. package/lib/DSL_DataSpace_Const.js.map +1 -1
  5. package/lib/{stores/query/DSL_DataSpace_LegendQueryRouter.d.ts → application/query/DSL_DataSpace_LegendQueryNavigation.d.ts} +12 -11
  6. package/lib/application/query/DSL_DataSpace_LegendQueryNavigation.d.ts.map +1 -0
  7. package/lib/{stores/query/DSL_DataSpace_LegendQueryRouter.js → application/query/DSL_DataSpace_LegendQueryNavigation.js} +13 -12
  8. package/lib/application/query/DSL_DataSpace_LegendQueryNavigation.js.map +1 -0
  9. package/lib/{components/studio/DSL_DataSpace_CodeSnippets.d.ts → application/studio/DSL_DataSpace_LegendStudioCodeSnippet.d.ts} +2 -2
  10. package/lib/application/studio/DSL_DataSpace_LegendStudioCodeSnippet.d.ts.map +1 -0
  11. package/lib/{components/studio/DSL_DataSpace_CodeSnippets.js → application/studio/DSL_DataSpace_LegendStudioCodeSnippet.js} +5 -1
  12. package/lib/application/studio/DSL_DataSpace_LegendStudioCodeSnippet.js.map +1 -0
  13. package/lib/application/studio/DSL_DataSpace_LegendStudioDocumentation.d.ts.map +1 -0
  14. package/lib/application/studio/DSL_DataSpace_LegendStudioDocumentation.js.map +1 -0
  15. package/lib/application/studio/DSL_DataSpace_LegendStudioNavigation.d.ts +28 -0
  16. package/lib/application/studio/DSL_DataSpace_LegendStudioNavigation.d.ts.map +1 -0
  17. package/lib/application/studio/DSL_DataSpace_LegendStudioNavigation.js +30 -0
  18. package/lib/application/studio/DSL_DataSpace_LegendStudioNavigation.js.map +1 -0
  19. package/lib/components/DSL_DataSpace_LegendApplicationPlugin.js +2 -1
  20. package/lib/components/DSL_DataSpace_LegendApplicationPlugin.js.map +1 -1
  21. package/lib/components/DataSpaceViewer.d.ts.map +1 -1
  22. package/lib/components/DataSpaceViewer.js +126 -34
  23. package/lib/components/DataSpaceViewer.js.map +1 -1
  24. package/lib/components/query/DSL_DataSpace_LegendQueryApplicationPlugin.d.ts.map +1 -1
  25. package/lib/components/query/DSL_DataSpace_LegendQueryApplicationPlugin.js +3 -3
  26. package/lib/components/query/DSL_DataSpace_LegendQueryApplicationPlugin.js.map +1 -1
  27. package/lib/components/query/DataSpaceQueryBuilder.d.ts.map +1 -1
  28. package/lib/components/query/DataSpaceQueryBuilder.js +6 -4
  29. package/lib/components/query/DataSpaceQueryBuilder.js.map +1 -1
  30. package/lib/components/query/DataSpaceQueryCreator.d.ts.map +1 -1
  31. package/lib/components/query/DataSpaceQueryCreator.js +8 -9
  32. package/lib/components/query/DataSpaceQueryCreator.js.map +1 -1
  33. package/lib/components/query/DataSpaceQuerySetup.d.ts.map +1 -1
  34. package/lib/components/query/DataSpaceQuerySetup.js +2 -1
  35. package/lib/components/query/DataSpaceQuerySetup.js.map +1 -1
  36. package/lib/components/studio/DSL_DataSpace_LegendStudioApplicationPlugin.d.ts +5 -1
  37. package/lib/components/studio/DSL_DataSpace_LegendStudioApplicationPlugin.d.ts.map +1 -1
  38. package/lib/components/studio/DSL_DataSpace_LegendStudioApplicationPlugin.js +41 -2
  39. package/lib/components/studio/DSL_DataSpace_LegendStudioApplicationPlugin.js.map +1 -1
  40. package/lib/components/studio/DataSpacePreview.d.ts +20 -0
  41. package/lib/components/studio/DataSpacePreview.d.ts.map +1 -0
  42. package/lib/components/studio/DataSpacePreview.js +52 -0
  43. package/lib/components/studio/DataSpacePreview.js.map +1 -0
  44. package/lib/components/studio/DataSpacePreviewAction.d.ts +26 -0
  45. package/lib/components/studio/DataSpacePreviewAction.d.ts.map +1 -0
  46. package/lib/components/studio/DataSpacePreviewAction.js +46 -0
  47. package/lib/components/studio/DataSpacePreviewAction.js.map +1 -0
  48. package/lib/graph/DSL_DataSpace_HashUtils.d.ts +2 -0
  49. package/lib/graph/DSL_DataSpace_HashUtils.d.ts.map +1 -1
  50. package/lib/graph/DSL_DataSpace_HashUtils.js +2 -0
  51. package/lib/graph/DSL_DataSpace_HashUtils.js.map +1 -1
  52. package/lib/graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.d.ts +5 -3
  53. package/lib/graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.d.ts.map +1 -1
  54. package/lib/graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.js +6 -4
  55. package/lib/graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.js.map +1 -1
  56. package/lib/graphManager/action/analytics/DataSpaceAnalysis.d.ts +10 -0
  57. package/lib/graphManager/action/analytics/DataSpaceAnalysis.d.ts.map +1 -1
  58. package/lib/graphManager/action/analytics/DataSpaceAnalysis.js +18 -0
  59. package/lib/graphManager/action/analytics/DataSpaceAnalysis.js.map +1 -1
  60. package/lib/graphManager/action/analytics/HACKY__DataSpaceUsageShowcase.d.ts +57 -0
  61. package/lib/graphManager/action/analytics/HACKY__DataSpaceUsageShowcase.d.ts.map +1 -0
  62. package/lib/graphManager/action/analytics/HACKY__DataSpaceUsageShowcase.js +209 -0
  63. package/lib/graphManager/action/analytics/HACKY__DataSpaceUsageShowcase.js.map +1 -0
  64. package/lib/graphManager/protocol/pure/DSL_DataSpace_PureProtocolProcessorPlugin.d.ts.map +1 -1
  65. package/lib/graphManager/protocol/pure/DSL_DataSpace_PureProtocolProcessorPlugin.js +13 -1
  66. package/lib/graphManager/protocol/pure/DSL_DataSpace_PureProtocolProcessorPlugin.js.map +1 -1
  67. package/lib/graphManager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.d.ts.map +1 -1
  68. package/lib/graphManager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.js +28 -4
  69. package/lib/graphManager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.js.map +1 -1
  70. package/lib/graphManager/protocol/pure/v1/engine/analytics/V1_DataSpaceAnalysis.d.ts +24 -0
  71. package/lib/graphManager/protocol/pure/v1/engine/analytics/V1_DataSpaceAnalysis.d.ts.map +1 -1
  72. package/lib/graphManager/protocol/pure/v1/engine/analytics/V1_DataSpaceAnalysis.js +79 -3
  73. package/lib/graphManager/protocol/pure/v1/engine/analytics/V1_DataSpaceAnalysis.js.map +1 -1
  74. package/lib/graphManager/protocol/pure/v1/model/packageableElements/dataSpace/V1_DSL_DataSpace_DataSpace.d.ts +3 -2
  75. package/lib/graphManager/protocol/pure/v1/model/packageableElements/dataSpace/V1_DSL_DataSpace_DataSpace.d.ts.map +1 -1
  76. package/lib/graphManager/protocol/pure/v1/model/packageableElements/dataSpace/V1_DSL_DataSpace_DataSpace.js +6 -4
  77. package/lib/graphManager/protocol/pure/v1/model/packageableElements/dataSpace/V1_DSL_DataSpace_DataSpace.js.map +1 -1
  78. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataSpace_ProtocolHelper.d.ts.map +1 -1
  79. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataSpace_ProtocolHelper.js +7 -17
  80. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataSpace_ProtocolHelper.js.map +1 -1
  81. package/lib/index.css +2 -2
  82. package/lib/index.css.map +1 -1
  83. package/lib/package.json +4 -4
  84. package/lib/stores/DataSpaceViewerState.d.ts +13 -8
  85. package/lib/stores/DataSpaceViewerState.d.ts.map +1 -1
  86. package/lib/stores/DataSpaceViewerState.js +11 -6
  87. package/lib/stores/DataSpaceViewerState.js.map +1 -1
  88. package/lib/stores/query/DataSpaceAdvancedSearchState.js +1 -1
  89. package/lib/stores/query/DataSpaceAdvancedSearchState.js.map +1 -1
  90. package/lib/stores/query/DataSpaceQueryCreatorStore.d.ts +1 -0
  91. package/lib/stores/query/DataSpaceQueryCreatorStore.d.ts.map +1 -1
  92. package/lib/stores/query/DataSpaceQueryCreatorStore.js +10 -2
  93. package/lib/stores/query/DataSpaceQueryCreatorStore.js.map +1 -1
  94. package/lib/stores/query/DataSpaceQuerySetupStore.js +1 -1
  95. package/lib/stores/query/DataSpaceQuerySetupStore.js.map +1 -1
  96. package/lib/stores/studio/DataSpacePreviewState.d.ts +30 -0
  97. package/lib/stores/studio/DataSpacePreviewState.d.ts.map +1 -0
  98. package/lib/stores/studio/DataSpacePreviewState.js +85 -0
  99. package/lib/stores/studio/DataSpacePreviewState.js.map +1 -0
  100. package/lib/stores/studio/DataSpacePreviewStore.d.ts +34 -0
  101. package/lib/stores/studio/DataSpacePreviewStore.d.ts.map +1 -0
  102. package/lib/stores/studio/DataSpacePreviewStore.js +98 -0
  103. package/lib/stores/studio/DataSpacePreviewStore.js.map +1 -0
  104. package/package.json +15 -15
  105. package/src/DSL_DataSpace_Const.ts +2 -1
  106. package/src/{stores/query/DSL_DataSpace_LegendQueryRouter.ts → application/query/DSL_DataSpace_LegendQueryNavigation.ts} +17 -18
  107. package/src/{components/studio/DSL_DataSpace_CodeSnippets.ts → application/studio/DSL_DataSpace_LegendStudioCodeSnippet.ts} +4 -0
  108. package/src/application/studio/DSL_DataSpace_LegendStudioNavigation.ts +53 -0
  109. package/src/components/DataSpaceViewer.tsx +541 -98
  110. package/src/components/query/DSL_DataSpace_LegendQueryApplicationPlugin.tsx +5 -4
  111. package/src/components/query/DataSpaceQueryBuilder.tsx +6 -4
  112. package/src/components/query/DataSpaceQueryCreator.tsx +12 -23
  113. package/src/components/query/DataSpaceQuerySetup.tsx +2 -1
  114. package/src/components/studio/DSL_DataSpace_LegendStudioApplicationPlugin.tsx +52 -2
  115. package/src/components/studio/DataSpacePreview.tsx +129 -0
  116. package/src/components/studio/DataSpacePreviewAction.tsx +127 -0
  117. package/src/graph/DSL_DataSpace_HashUtils.ts +2 -0
  118. package/src/graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.ts +15 -4
  119. package/src/graphManager/action/analytics/DataSpaceAnalysis.ts +31 -0
  120. package/src/graphManager/action/analytics/HACKY__DataSpaceUsageShowcase.ts +313 -0
  121. package/src/graphManager/protocol/pure/DSL_DataSpace_PureProtocolProcessorPlugin.ts +25 -0
  122. package/src/graphManager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.ts +66 -3
  123. package/src/graphManager/protocol/pure/v1/engine/analytics/V1_DataSpaceAnalysis.ts +110 -1
  124. package/src/graphManager/protocol/pure/v1/model/packageableElements/dataSpace/V1_DSL_DataSpace_DataSpace.ts +6 -4
  125. package/src/graphManager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataSpace_ProtocolHelper.ts +13 -53
  126. package/src/stores/DataSpaceViewerState.ts +25 -14
  127. package/src/stores/query/DataSpaceAdvancedSearchState.ts +1 -1
  128. package/src/stores/query/DataSpaceQueryCreatorStore.ts +13 -1
  129. package/src/stores/query/DataSpaceQuerySetupStore.ts +1 -1
  130. package/src/stores/studio/DataSpacePreviewState.ts +150 -0
  131. package/src/stores/studio/DataSpacePreviewStore.ts +172 -0
  132. package/tsconfig.json +10 -5
  133. package/tsconfig.package.json +1 -2
  134. package/lib/components/studio/DSL_DataSpace_CodeSnippets.d.ts.map +0 -1
  135. package/lib/components/studio/DSL_DataSpace_CodeSnippets.js.map +0 -1
  136. package/lib/components/studio/DSL_DataSpace_LegendStudioDocumentation.d.ts.map +0 -1
  137. package/lib/components/studio/DSL_DataSpace_LegendStudioDocumentation.js.map +0 -1
  138. package/lib/stores/query/DSL_DataSpace_LegendQueryRouter.d.ts.map +0 -1
  139. package/lib/stores/query/DSL_DataSpace_LegendQueryRouter.js.map +0 -1
  140. /package/lib/{components → application}/studio/DSL_DataSpace_LegendStudioDocumentation.d.ts +0 -0
  141. /package/lib/{components → application}/studio/DSL_DataSpace_LegendStudioDocumentation.js +0 -0
  142. /package/src/{components → application}/studio/DSL_DataSpace_LegendStudioDocumentation.ts +0 -0
@@ -0,0 +1,313 @@
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 { Randomizer, uuid } from '@finos/legend-shared';
18
+ import { action, makeObservable, observable } from 'mobx';
19
+
20
+ export abstract class HACKY__DataSpaceUsageShowcaseSampleOutput {}
21
+
22
+ export abstract class HACKY__DataSpaceUsageShowcaseOutputDescription {
23
+ readonly sampleOutput!: HACKY__DataSpaceUsageShowcaseSampleOutput;
24
+
25
+ constructor(sampleOutput: HACKY__DataSpaceUsageShowcaseSampleOutput) {
26
+ this.sampleOutput = sampleOutput;
27
+ }
28
+ }
29
+
30
+ type SampleData = boolean | string | number | undefined;
31
+
32
+ export class HACKY__DataSpaceUsageShowcaseTDSSampleOutput extends HACKY__DataSpaceUsageShowcaseSampleOutput {
33
+ readonly headers: string[] = [];
34
+ readonly rows: SampleData[][] = [];
35
+
36
+ constructor(headers: string[], rows: SampleData[][]) {
37
+ super();
38
+ this.headers = headers;
39
+ this.rows = rows;
40
+ }
41
+ }
42
+
43
+ class HACKY__DataSpaceUsageShowcaseTDSColumnInfo {
44
+ readonly uuid = uuid();
45
+ readonly name!: string;
46
+ readonly description?: string | undefined;
47
+ readonly sampleValues: SampleData[] = [];
48
+
49
+ constructor(
50
+ name: string,
51
+ description: string | undefined,
52
+ sampleValues: SampleData[],
53
+ ) {
54
+ this.name = name;
55
+ this.description = description;
56
+ this.sampleValues = sampleValues;
57
+ }
58
+ }
59
+
60
+ const generateTDSSampleOutput = (
61
+ columns: HACKY__DataSpaceUsageShowcaseTDSColumnInfo[],
62
+ rowCount = 10,
63
+ ): SampleData[][] => {
64
+ const randomizer = new Randomizer();
65
+ const data: SampleData[][] = [];
66
+ for (let i = 0; i < rowCount; ++i) {
67
+ const rowData: SampleData[] = [];
68
+ columns.forEach((column) => {
69
+ if (column.sampleValues.length) {
70
+ rowData.push(randomizer.getRandomItemInCollection(column.sampleValues));
71
+ } else {
72
+ rowData.push(undefined);
73
+ }
74
+ });
75
+ data.push(rowData);
76
+ }
77
+ return data;
78
+ };
79
+
80
+ export class HACKY__DataSpaceUsageShowcaseTDSOutputDescription extends HACKY__DataSpaceUsageShowcaseOutputDescription {
81
+ readonly columns: HACKY__DataSpaceUsageShowcaseTDSColumnInfo[] = [];
82
+
83
+ constructor(columns: HACKY__DataSpaceUsageShowcaseTDSColumnInfo[]) {
84
+ super(
85
+ new HACKY__DataSpaceUsageShowcaseTDSSampleOutput(
86
+ columns.map((col) => col.name),
87
+ generateTDSSampleOutput(columns),
88
+ ),
89
+ );
90
+ this.columns = columns;
91
+ }
92
+ }
93
+
94
+ export class HACKY__DataSpaceUsageShowcase {
95
+ readonly uuid = uuid();
96
+ readonly title!: string;
97
+ readonly description?: string | undefined;
98
+ readonly query!: string;
99
+ readonly outputDescription!: HACKY__DataSpaceUsageShowcaseOutputDescription;
100
+
101
+ showQuery = false;
102
+ showOutputDescription = true;
103
+ showSampleOutput = false;
104
+
105
+ constructor(
106
+ title: string,
107
+ description: string | undefined,
108
+ query: string,
109
+ outputDescription: HACKY__DataSpaceUsageShowcaseOutputDescription,
110
+ ) {
111
+ makeObservable(this, {
112
+ showQuery: observable,
113
+ showOutputDescription: observable,
114
+ showSampleOutput: observable,
115
+ setShowQuery: action,
116
+ setShowOutputDescription: action,
117
+ setShowSampleOutput: action,
118
+ });
119
+
120
+ this.title = title;
121
+ this.description = description;
122
+ this.query = query;
123
+ this.outputDescription = outputDescription;
124
+ }
125
+
126
+ setShowQuery(val: boolean): void {
127
+ this.showQuery = val;
128
+ }
129
+
130
+ setShowOutputDescription(val: boolean): void {
131
+ this.showOutputDescription = val;
132
+ }
133
+
134
+ setShowSampleOutput(val: boolean): void {
135
+ this.showSampleOutput = val;
136
+ }
137
+ }
138
+
139
+ export const HACKY__SHOWCASE1 = new HACKY__DataSpaceUsageShowcase(
140
+ 'Getting all COVID cases info',
141
+ `## Illa figens scelerum operum tonitribus cumque ego
142
+
143
+ Lorem markdownum meritis quoque narravere ea fallere caelumque enim magnoque! Et
144
+ animam trabeati Iuppiter quos ossa erat coniuge tu secrevit glaebas viam vulgus,
145
+ adsere eripitur saepe; eadem.
146
+
147
+ ## Genualia quae
148
+
149
+ Troezenius sceptri respondere curasque et quidem epulae oculos inornatos letique
150
+ servaverat armi facta. Ille sentirent! Excipit Echecli [vos
151
+ optatis](http://ante.io/quid.aspx): quo stipite dixit in supremis nec fatetur
152
+ sentit; illa ultor. Multa abest terras facundis utque, omnique silvamque nam
153
+ quamvis iners.
154
+
155
+ real_basic = exbibyte - isoText / zebibyteLogicNorthbridge -
156
+ ripcordingHeatCard;
157
+ ppl(ppgaNosql(grayscaleFile(vpnBsod, file, balancing)), pop_cross_error(97 +
158
+ cmos_mac), w);
159
+ rich.fileClientTablet = impact.method_pharming(xml, w_external +
160
+ softwareGpsDirect);
161
+ search = -1;
162
+
163
+ ## Trabes cepit mortalia`,
164
+ `|domain::COVIDData.all()->project(
165
+ [
166
+ x|$x.cases,
167
+ x|$x.caseType,
168
+ x|$x.fips,
169
+ x|$x.date
170
+ ],
171
+ [
172
+ 'Cases',
173
+ 'Case Type',
174
+ 'Fips',
175
+ 'Date'
176
+ ]
177
+ )`,
178
+ new HACKY__DataSpaceUsageShowcaseTDSOutputDescription([
179
+ new HACKY__DataSpaceUsageShowcaseTDSColumnInfo(
180
+ 'Cases',
181
+ 'The number of cases',
182
+ [123, 1416, 12453, 6234],
183
+ ),
184
+ new HACKY__DataSpaceUsageShowcaseTDSColumnInfo(
185
+ 'Case Type',
186
+ 'Type of the reported case: e.g. Active, Confirmed',
187
+ ['Active', 'Confirmed'],
188
+ ),
189
+ new HACKY__DataSpaceUsageShowcaseTDSColumnInfo(
190
+ 'FIPS',
191
+ 'The FIPS code',
192
+ [1, 3, 5, 6, 7],
193
+ ),
194
+ new HACKY__DataSpaceUsageShowcaseTDSColumnInfo(
195
+ 'Date',
196
+ 'The date of case report',
197
+ ['2020-10-10', '2023-10-15', '2022-03-03'],
198
+ ),
199
+ ]),
200
+ );
201
+
202
+ export const HACKY__SHOWCASE2 = new HACKY__DataSpaceUsageShowcase(
203
+ 'Getting COVID cases info for New York (FIPS: 20)',
204
+ `## Citharam laudibus et mensas Numitorque eademque
205
+
206
+ Lorem markdownum ferventia euntem adsensit tenetque fateri dirum intrasse
207
+ [Naupliades](http://promisistis.net/): quod. Aequali somni vulnera frontem tamen
208
+ circumdata quidem coniunctior rerum omnis reddite teneri Maiaque manebat
209
+ corpora, Acmon caputque demptos.
210
+
211
+ ## E tepidisque
212
+
213
+ Fetus Sperchios, dumque bono spissus media ora desilit ingenti, lupo forsitan
214
+ *se*. Extra et una **iuventus pronus** crinis nodum lucis casus quae pronus et.
215
+
216
+ > **Latos fuit** bracchia contendere thalamos inmiti securibus Aeginam campus
217
+ > maestaeque urbis, sic nobis quae colebat, manu. Nec fecit descendat dare
218
+ > minus; a umbras iam inpetus **neci**. Quid talia, et pulsis, easdem, clamore,
219
+ > putetis. AI inultam loqui **antiquo Liberfemineae** damna; nostra riget
220
+ > liberat rogatus nisi recentibus. Putria turbineo terram virilem, est quoque
221
+ > *esse Sabina* qui profatur rauca, hunc.
222
+ `,
223
+ `|domain::COVIDData.all()->filter(
224
+ x|$x.demographics.fips == '20'
225
+ )->project(
226
+ [
227
+ x|$x.cases,
228
+ x|$x.caseType,
229
+ x|$x.fips,
230
+ x|$x.date,
231
+ x|$x.demographics.state
232
+ ],
233
+ [
234
+ 'Cases',
235
+ 'Case Type',
236
+ 'Fips',
237
+ 'Date',
238
+ 'Demographics/State'
239
+ ]
240
+ )`,
241
+ new HACKY__DataSpaceUsageShowcaseTDSOutputDescription([
242
+ new HACKY__DataSpaceUsageShowcaseTDSColumnInfo(
243
+ 'Cases',
244
+ 'The number of cases',
245
+ [123, 1416, 12453, 6234],
246
+ ),
247
+ new HACKY__DataSpaceUsageShowcaseTDSColumnInfo(
248
+ 'Case Type',
249
+ 'Type of the reported case: e.g. Active, Confirmed',
250
+ ['Active', 'Confirmed'],
251
+ ),
252
+ new HACKY__DataSpaceUsageShowcaseTDSColumnInfo(
253
+ 'FIPS',
254
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ante in nibh mauris cursus mattis. Placerat vestibulum lectus mauris ultrices eros. Dignissim diam quis enim lobortis scelerisque. Quam id leo in vitae turpis. Lobortis feugiat vivamus at augue eget arcu dictum varius duis. Tellus mauris a diam maecenas sed enim ut sem viverra. Nec feugiat nisl pretium fusce id. A iaculis at erat pellentesque adipiscing commodo. Turpis massa tincidunt dui ut ornare lectus sit. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada. Nisi lacus sed viverra tellus in hac habitasse platea dictumst. Commodo viverra maecenas accumsan lacus vel facilisis volutpat.',
255
+ [1, 3, 5, 6, 7],
256
+ ),
257
+ new HACKY__DataSpaceUsageShowcaseTDSColumnInfo(
258
+ 'Date',
259
+ 'The date of case report',
260
+ ['2020-10-10', '2023-10-15', '2022-03-03'],
261
+ ),
262
+ new HACKY__DataSpaceUsageShowcaseTDSColumnInfo(
263
+ 'State',
264
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Imperdiet proin fermentum leo vel orci porta. Et tortor consequat id porta nibh venenatis cras. Ut etiam sit amet nisl purus in mollis. Iaculis eu non diam phasellus vestibulum lorem sed risus. Nisl vel pretium lectus quam id leo in vitae. Tellus molestie nunc non blandit massa enim nec dui. Lorem donec massa sapien faucibus et molestie ac. Pharetra convallis posuere morbi leo urna molestie at. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit ullamcorper. Non blandit massa enim nec dui nunc mattis. Scelerisque eleifend donec pretium vulputate sapien. In cursus turpis massa tincidunt dui ut ornare lectus sit. Turpis in eu mi bibendum neque. Congue mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Elit ullamcorper dignissim cras tincidunt lobortis feugiat. Pellentesque dignissim enim sit amet. Morbi tristique senectus et netus et malesuada fames ac. At tellus at urna condimentum mattis pellentesque id',
265
+ ['New York', 'Minesota', 'New Jersey', 'California'],
266
+ ),
267
+ ]),
268
+ );
269
+
270
+ export const HACKY__SHOWCASE3 = new HACKY__DataSpaceUsageShowcase(
271
+ 'Getting COVID cases for today',
272
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
273
+ `|domain::COVIDData.all()->filter(
274
+ x|$x.date ==
275
+ meta::pure::functions::date::today()
276
+ )->project(
277
+ [
278
+ x|$x.cases,
279
+ x|$x.caseType,
280
+ x|$x.date,
281
+ x|$x.demographics.state
282
+ ],
283
+ [
284
+ 'Cases',
285
+ 'Case Type',
286
+ 'Date',
287
+ 'Fips',
288
+ 'Demographics/State'
289
+ ]
290
+ )`,
291
+ new HACKY__DataSpaceUsageShowcaseTDSOutputDescription([
292
+ new HACKY__DataSpaceUsageShowcaseTDSColumnInfo(
293
+ 'Cases',
294
+ 'The number of cases',
295
+ [123, 1416, 12453, 6234],
296
+ ),
297
+ new HACKY__DataSpaceUsageShowcaseTDSColumnInfo(
298
+ 'Case Type',
299
+ 'Type of the reported case: e.g. Active, Confirmed',
300
+ ['Active', 'Confirmed'],
301
+ ),
302
+ new HACKY__DataSpaceUsageShowcaseTDSColumnInfo(
303
+ 'Date',
304
+ 'The date of case report',
305
+ ['2020-10-10', '2023-10-15', '2022-03-03'],
306
+ ),
307
+ new HACKY__DataSpaceUsageShowcaseTDSColumnInfo(
308
+ 'State',
309
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Imperdiet proin fermentum leo vel orci porta. Et tortor consequat id porta nibh venenatis cras. Ut etiam sit amet nisl purus in mollis. Iaculis eu non diam phasellus vestibulum lorem sed risus. Nisl vel pretium lectus quam id leo in vitae. Tellus molestie nunc non blandit massa enim nec dui. Lorem donec massa sapien faucibus et molestie ac. Pharetra convallis posuere morbi leo urna molestie at. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit ullamcorper. Non blandit massa enim nec dui nunc mattis. Scelerisque eleifend donec pretium vulputate sapien. In cursus turpis massa tincidunt dui ut ornare lectus sit. Turpis in eu mi bibendum neque. Congue mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Elit ullamcorper dignissim cras tincidunt lobortis feugiat. Pellentesque dignissim enim sit amet. Morbi tristique senectus et netus et malesuada fames ac. At tellus at urna condimentum mattis pellentesque id',
310
+ ['New York', 'Minesota', 'New Jersey', 'California'],
311
+ ),
312
+ ]),
313
+ );
@@ -62,6 +62,9 @@ import {
62
62
  V1_ElementBuilder,
63
63
  V1_initPackageableElement,
64
64
  V1_buildFullPath,
65
+ Class,
66
+ Enumeration,
67
+ Association,
65
68
  } from '@finos/legend-graph';
66
69
  import {
67
70
  V1_DSL_Diagram_PackageableElementPointerType,
@@ -157,6 +160,21 @@ export class DSL_DataSpace_PureProtocolProcessorPlugin extends PureProtocolProce
157
160
  ),
158
161
  );
159
162
  }
163
+ if (elementProtocol.elements) {
164
+ element.elements = elementProtocol.elements.map((pointer) => {
165
+ const el = context.graph.getElement(pointer.path);
166
+ if (
167
+ el instanceof Class ||
168
+ el instanceof Enumeration ||
169
+ el instanceof Association
170
+ ) {
171
+ return PackageableElementExplicitReference.create(el);
172
+ }
173
+ throw new UnsupportedOperationError(
174
+ `Can't find data space element (only allow class, enumartion, association) '${pointer.path}'`,
175
+ );
176
+ });
177
+ }
160
178
  if (elementProtocol.supportInfo) {
161
179
  if (
162
180
  elementProtocol.supportInfo instanceof V1_DataSpaceSupportEmail
@@ -264,6 +282,13 @@ export class DSL_DataSpace_PureProtocolProcessorPlugin extends PureProtocolProce
264
282
  diagramPath.valueForSerialization ?? '',
265
283
  ),
266
284
  );
285
+ protocol.elements = metamodel.elements?.map(
286
+ (elPath) =>
287
+ new V1_PackageableElementPointer(
288
+ PackageableElementPointerType.CLASS,
289
+ elPath.valueForSerialization ?? '',
290
+ ),
291
+ );
267
292
  if (metamodel.supportInfo) {
268
293
  if (metamodel.supportInfo instanceof DataSpaceSupportEmail) {
269
294
  const supportEmail = new V1_DataSpaceSupportEmail();
@@ -46,12 +46,18 @@ import { DataSpaceSupportEmail } from '../../../../graph/metamodel/pure/model/pa
46
46
  import { V1_DataSpaceSupportEmail } from '../../../../graphManager/protocol/pure/v1/model/packageableElements/dataSpace/V1_DSL_DataSpace_DataSpace.js';
47
47
  import {
48
48
  DataSpaceAnalysisResult,
49
+ DataSpaceDocumentationEntry,
49
50
  DataSpaceExecutionContextAnalysisResult,
50
51
  DataSpaceStereotypeInfo,
51
52
  DataSpaceTaggedValueInfo,
52
53
  } from '../../../action/analytics/DataSpaceAnalysis.js';
53
54
  import { DSL_DataSpace_PureGraphManagerExtension } from '../DSL_DataSpace_PureGraphManagerExtension.js';
54
- import { V1_DataSpaceAnalysisResult } from './engine/analytics/V1_DataSpaceAnalysis.js';
55
+ import {
56
+ V1_DataSpaceAnalysisResult,
57
+ V1_DataSpaceAssociationDocumentationEntry,
58
+ V1_DataSpaceClassDocumentationEntry,
59
+ V1_DataSpaceEnumerationDocumentationEntry,
60
+ } from './engine/analytics/V1_DataSpaceAnalysis.js';
55
61
 
56
62
  const ANALYZE_DATA_SPACE_TRACE = 'analyze data space';
57
63
 
@@ -254,7 +260,7 @@ export class V1_DSL_DataSpace_PureGraphManagerExtension extends DSL_DataSpace_Pu
254
260
  ActionState.create(),
255
261
  );
256
262
 
257
- // build execution context info
263
+ // execution context
258
264
  result.executionContextsIndex = new Map<
259
265
  string,
260
266
  DataSpaceExecutionContextAnalysisResult
@@ -280,11 +286,68 @@ export class V1_DSL_DataSpace_PureGraphManagerExtension extends DSL_DataSpace_Pu
280
286
  result.executionContextsIndex.get(analysisResult.defaultExecutionContext),
281
287
  );
282
288
 
283
- // find featured diagrams
289
+ // featured diagrams
284
290
  result.featuredDiagrams = analysisResult.featuredDiagrams.map((path) =>
285
291
  getDiagram(path, graph),
286
292
  );
287
293
 
294
+ // elements documentation
295
+ result.elementDocs = analysisResult.elementDocs.flatMap((docEntry) => {
296
+ const entries: DataSpaceDocumentationEntry[] = [];
297
+ entries.push(
298
+ new DataSpaceDocumentationEntry(
299
+ docEntry.path,
300
+ undefined,
301
+ docEntry.docs.join('\n'),
302
+ ),
303
+ );
304
+ if (docEntry instanceof V1_DataSpaceClassDocumentationEntry) {
305
+ docEntry.properties.forEach((property) => {
306
+ entries.push(
307
+ new DataSpaceDocumentationEntry(
308
+ docEntry.path,
309
+ property.name,
310
+ property.docs.join('\n'),
311
+ ),
312
+ );
313
+ });
314
+ docEntry.inheritedProperties.forEach((property) => {
315
+ entries.push(
316
+ new DataSpaceDocumentationEntry(
317
+ docEntry.path,
318
+ property.name,
319
+ property.docs.join('\n'),
320
+ ),
321
+ );
322
+ });
323
+ } else if (
324
+ docEntry instanceof V1_DataSpaceEnumerationDocumentationEntry
325
+ ) {
326
+ docEntry.enumValues.forEach((enumValue) => {
327
+ entries.push(
328
+ new DataSpaceDocumentationEntry(
329
+ docEntry.path,
330
+ enumValue.name,
331
+ enumValue.docs.join('\n'),
332
+ ),
333
+ );
334
+ });
335
+ } else if (
336
+ docEntry instanceof V1_DataSpaceAssociationDocumentationEntry
337
+ ) {
338
+ docEntry.properties.forEach((property) => {
339
+ entries.push(
340
+ new DataSpaceDocumentationEntry(
341
+ docEntry.path,
342
+ property.name,
343
+ property.docs.join('\n'),
344
+ ),
345
+ );
346
+ });
347
+ }
348
+ return entries;
349
+ });
350
+
288
351
  return result;
289
352
  }
290
353
  }
@@ -15,9 +15,15 @@
15
15
  */
16
16
 
17
17
  import { V1_PureModelContextData } from '@finos/legend-graph';
18
- import { SerializationFactory, optionalCustom } from '@finos/legend-shared';
18
+ import {
19
+ SerializationFactory,
20
+ optionalCustom,
21
+ type PlainObject,
22
+ UnsupportedOperationError,
23
+ } from '@finos/legend-shared';
19
24
  import {
20
25
  createModelSchema,
26
+ custom,
21
27
  list,
22
28
  object,
23
29
  optional,
@@ -71,6 +77,101 @@ class V1_DataSpaceExecutionContextAnalysisResult {
71
77
  );
72
78
  }
73
79
 
80
+ export class V1_DataSpaceBasicDocumentationEntry {
81
+ name!: string;
82
+ docs: string[] = [];
83
+
84
+ static readonly serialization = new SerializationFactory(
85
+ createModelSchema(V1_DataSpaceBasicDocumentationEntry, {
86
+ name: primitive(),
87
+ docs: list(primitive()),
88
+ }),
89
+ );
90
+ }
91
+
92
+ export class V1_DataSpaceModelDocumentationEntry extends V1_DataSpaceBasicDocumentationEntry {
93
+ path!: string;
94
+
95
+ static override readonly serialization = new SerializationFactory(
96
+ createModelSchema(V1_DataSpaceModelDocumentationEntry, {
97
+ name: primitive(),
98
+ docs: list(primitive()),
99
+ path: primitive(),
100
+ }),
101
+ );
102
+ }
103
+
104
+ export class V1_DataSpaceClassDocumentationEntry extends V1_DataSpaceModelDocumentationEntry {
105
+ inheritedProperties: V1_DataSpaceBasicDocumentationEntry[] = [];
106
+ properties: V1_DataSpaceBasicDocumentationEntry[] = [];
107
+
108
+ static override readonly serialization = new SerializationFactory(
109
+ createModelSchema(V1_DataSpaceClassDocumentationEntry, {
110
+ name: primitive(),
111
+ docs: list(primitive()),
112
+ path: primitive(),
113
+ inheritedProperties: list(object(V1_DataSpaceBasicDocumentationEntry)),
114
+ properties: list(object(V1_DataSpaceBasicDocumentationEntry)),
115
+ }),
116
+ );
117
+ }
118
+
119
+ export class V1_DataSpaceEnumerationDocumentationEntry extends V1_DataSpaceModelDocumentationEntry {
120
+ enumValues: V1_DataSpaceBasicDocumentationEntry[] = [];
121
+
122
+ static override readonly serialization = new SerializationFactory(
123
+ createModelSchema(V1_DataSpaceEnumerationDocumentationEntry, {
124
+ name: primitive(),
125
+ docs: list(primitive()),
126
+ enumValues: list(object(V1_DataSpaceBasicDocumentationEntry)),
127
+ path: primitive(),
128
+ }),
129
+ );
130
+ }
131
+
132
+ export class V1_DataSpaceAssociationDocumentationEntry extends V1_DataSpaceModelDocumentationEntry {
133
+ properties: V1_DataSpaceBasicDocumentationEntry[] = [];
134
+
135
+ static override readonly serialization = new SerializationFactory(
136
+ createModelSchema(V1_DataSpaceAssociationDocumentationEntry, {
137
+ name: primitive(),
138
+ docs: list(primitive()),
139
+ path: primitive(),
140
+ properties: list(object(V1_DataSpaceBasicDocumentationEntry)),
141
+ }),
142
+ );
143
+ }
144
+
145
+ enum V1_DataSpaceModelDocumentationEntryType {
146
+ MODEL = 'model',
147
+ CLASS = 'class',
148
+ ENUMERATION = 'enumeration',
149
+ ASSOCIATION = 'association',
150
+ }
151
+
152
+ function V1_deserializeModelDocumentationEntry(
153
+ json: PlainObject<V1_DataSpaceModelDocumentationEntry>,
154
+ ): V1_DataSpaceModelDocumentationEntry {
155
+ switch (json._type) {
156
+ case V1_DataSpaceModelDocumentationEntryType.MODEL:
157
+ return V1_DataSpaceModelDocumentationEntry.serialization.fromJson(json);
158
+ case V1_DataSpaceModelDocumentationEntryType.CLASS:
159
+ return V1_DataSpaceClassDocumentationEntry.serialization.fromJson(json);
160
+ case V1_DataSpaceModelDocumentationEntryType.ENUMERATION:
161
+ return V1_DataSpaceEnumerationDocumentationEntry.serialization.fromJson(
162
+ json,
163
+ );
164
+ case V1_DataSpaceModelDocumentationEntryType.ASSOCIATION:
165
+ return V1_DataSpaceAssociationDocumentationEntry.serialization.fromJson(
166
+ json,
167
+ );
168
+ default:
169
+ throw new UnsupportedOperationError(
170
+ `Can't deserialize model documentation entry of type '${json._type}'`,
171
+ );
172
+ }
173
+ }
174
+
74
175
  export class V1_DataSpaceAnalysisResult {
75
176
  name!: string;
76
177
  package!: string;
@@ -90,6 +191,9 @@ export class V1_DataSpaceAnalysisResult {
90
191
 
91
192
  featuredDiagrams: string[] = [];
92
193
 
194
+ elements: string[] = [];
195
+ elementDocs: V1_DataSpaceModelDocumentationEntry[] = [];
196
+
93
197
  static readonly serialization = new SerializationFactory(
94
198
  createModelSchema(V1_DataSpaceAnalysisResult, {
95
199
  name: primitive(),
@@ -114,6 +218,11 @@ export class V1_DataSpaceAnalysisResult {
114
218
  defaultExecutionContext: primitive(),
115
219
 
116
220
  featuredDiagrams: list(primitive()),
221
+
222
+ elements: list(primitive()),
223
+ elementDocs: list(
224
+ custom(() => SKIP, V1_deserializeModelDocumentationEntry),
225
+ ),
117
226
  }),
118
227
  );
119
228
  }
@@ -62,11 +62,12 @@ export class V1_DataSpaceExecutionContext implements Hashable {
62
62
  export class V1_DataSpace extends V1_PackageableElement implements Hashable {
63
63
  stereotypes: V1_StereotypePtr[] = [];
64
64
  taggedValues: V1_TaggedValue[] = [];
65
+ title?: string | undefined;
66
+ description?: string | undefined;
65
67
  executionContexts!: V1_DataSpaceExecutionContext[];
66
68
  defaultExecutionContext!: string;
67
69
  featuredDiagrams?: V1_PackageableElementPointer[] | undefined;
68
- title?: string | undefined;
69
- description?: string | undefined;
70
+ elements?: V1_PackageableElementPointer[] | undefined;
70
71
  supportInfo?: V1_DataSpaceSupportInfo | undefined;
71
72
 
72
73
  override get hashCode(): string {
@@ -74,11 +75,12 @@ export class V1_DataSpace extends V1_PackageableElement implements Hashable {
74
75
  DATA_SPACE_HASH_STRUCTURE.DATA_SPACE,
75
76
  hashArray(this.stereotypes),
76
77
  hashArray(this.taggedValues),
78
+ this.title ?? '',
79
+ this.description ?? '',
77
80
  hashArray(this.executionContexts),
78
81
  this.defaultExecutionContext,
79
82
  hashArray((this.featuredDiagrams ?? []).map((pointer) => pointer.path)),
80
- this.title ?? '',
81
- this.description ?? '',
83
+ hashArray((this.elements ?? []).map((pointer) => pointer.path)),
82
84
  this.supportInfo ?? '',
83
85
  ]);
84
86
  }