@finos/legend-extension-dsl-data-space 10.4.244 → 10.4.246

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 (62) hide show
  1. package/lib/components/DSL_DataSpace_LegendApplicationPlugin.js +2 -2
  2. package/lib/components/DSL_DataSpace_LegendApplicationPlugin.js.map +1 -1
  3. package/lib/components/query-builder/DataSpaceQueryBuilder.d.ts.map +1 -1
  4. package/lib/components/query-builder/DataSpaceQueryBuilder.js +11 -7
  5. package/lib/components/query-builder/DataSpaceQueryBuilder.js.map +1 -1
  6. package/lib/components/query-builder/DataSpaceQueryBuilderTemplateQueryPanelContent.js +1 -1
  7. package/lib/components/query-builder/DataSpaceQueryBuilderTemplateQueryPanelContent.js.map +1 -1
  8. package/lib/graph/DSL_DataSpace_HashUtils.d.ts +1 -0
  9. package/lib/graph/DSL_DataSpace_HashUtils.d.ts.map +1 -1
  10. package/lib/graph/DSL_DataSpace_HashUtils.js +1 -0
  11. package/lib/graph/DSL_DataSpace_HashUtils.js.map +1 -1
  12. package/lib/graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.d.ts +11 -5
  13. package/lib/graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.d.ts.map +1 -1
  14. package/lib/graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.js +18 -5
  15. package/lib/graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.js.map +1 -1
  16. package/lib/graph-manager/DSL_DataSpace_GraphManagerHelper.d.ts +5 -2
  17. package/lib/graph-manager/DSL_DataSpace_GraphManagerHelper.d.ts.map +1 -1
  18. package/lib/graph-manager/DSL_DataSpace_GraphManagerHelper.js +22 -4
  19. package/lib/graph-manager/DSL_DataSpace_GraphManagerHelper.js.map +1 -1
  20. package/lib/graph-manager/action/analytics/DataSpaceAnalysisHelper.d.ts.map +1 -1
  21. package/lib/graph-manager/action/analytics/DataSpaceAnalysisHelper.js +2 -1
  22. package/lib/graph-manager/action/analytics/DataSpaceAnalysisHelper.js.map +1 -1
  23. package/lib/graph-manager/action/changeDetection/DSL_DataSpace_ObserverHelper.d.ts +2 -1
  24. package/lib/graph-manager/action/changeDetection/DSL_DataSpace_ObserverHelper.d.ts.map +1 -1
  25. package/lib/graph-manager/action/changeDetection/DSL_DataSpace_ObserverHelper.js +23 -4
  26. package/lib/graph-manager/action/changeDetection/DSL_DataSpace_ObserverHelper.js.map +1 -1
  27. package/lib/graph-manager/index.d.ts +1 -1
  28. package/lib/graph-manager/index.d.ts.map +1 -1
  29. package/lib/graph-manager/index.js +1 -1
  30. package/lib/graph-manager/index.js.map +1 -1
  31. package/lib/graph-manager/protocol/pure/DSL_DataSpace_PureProtocolProcessorPlugin.d.ts.map +1 -1
  32. package/lib/graph-manager/protocol/pure/DSL_DataSpace_PureProtocolProcessorPlugin.js +46 -20
  33. package/lib/graph-manager/protocol/pure/DSL_DataSpace_PureProtocolProcessorPlugin.js.map +1 -1
  34. package/lib/graph-manager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.js +2 -2
  35. package/lib/graph-manager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.js.map +1 -1
  36. package/lib/graph-manager/protocol/pure/v1/model/packageableElements/dataSpace/V1_DSL_DataSpace_DataSpace.d.ts +10 -4
  37. package/lib/graph-manager/protocol/pure/v1/model/packageableElements/dataSpace/V1_DSL_DataSpace_DataSpace.d.ts.map +1 -1
  38. package/lib/graph-manager/protocol/pure/v1/model/packageableElements/dataSpace/V1_DSL_DataSpace_DataSpace.js +17 -4
  39. package/lib/graph-manager/protocol/pure/v1/model/packageableElements/dataSpace/V1_DSL_DataSpace_DataSpace.js.map +1 -1
  40. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataSpace_ProtocolHelper.d.ts.map +1 -1
  41. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataSpace_ProtocolHelper.js +10 -5
  42. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataSpace_ProtocolHelper.js.map +1 -1
  43. package/lib/index.css +1 -1
  44. package/lib/package.json +1 -1
  45. package/lib/stores/query-builder/DataSpaceQueryBuilderState.d.ts.map +1 -1
  46. package/lib/stores/query-builder/DataSpaceQueryBuilderState.js +6 -4
  47. package/lib/stores/query-builder/DataSpaceQueryBuilderState.js.map +1 -1
  48. package/package.json +9 -9
  49. package/src/components/DSL_DataSpace_LegendApplicationPlugin.tsx +2 -2
  50. package/src/components/query-builder/DataSpaceQueryBuilder.tsx +23 -14
  51. package/src/components/query-builder/DataSpaceQueryBuilderTemplateQueryPanelContent.tsx +1 -1
  52. package/src/graph/DSL_DataSpace_HashUtils.ts +1 -0
  53. package/src/graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.ts +24 -9
  54. package/src/graph-manager/DSL_DataSpace_GraphManagerHelper.ts +41 -3
  55. package/src/graph-manager/action/analytics/DataSpaceAnalysisHelper.ts +2 -1
  56. package/src/graph-manager/action/changeDetection/DSL_DataSpace_ObserverHelper.ts +29 -4
  57. package/src/graph-manager/index.ts +1 -0
  58. package/src/graph-manager/protocol/pure/DSL_DataSpace_PureProtocolProcessorPlugin.ts +91 -56
  59. package/src/graph-manager/protocol/pure/v1/V1_DSL_DataSpace_PureGraphManagerExtension.ts +3 -3
  60. package/src/graph-manager/protocol/pure/v1/model/packageableElements/dataSpace/V1_DSL_DataSpace_DataSpace.ts +23 -8
  61. package/src/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataSpace_ProtocolHelper.ts +22 -4
  62. package/src/stores/query-builder/DataSpaceQueryBuilderState.ts +6 -4
@@ -21,6 +21,7 @@ import {
21
21
  V1_DataSpaceDiagram,
22
22
  V1_DataSpaceElementPointer,
23
23
  V1_DataSpaceExecutionContext,
24
+ V1_DataSpaceMappingProvider,
24
25
  V1_DataSpacePackageableElementExecutable,
25
26
  V1_DataSpaceSupportCombinedInfo,
26
27
  V1_DataSpaceSupportEmail,
@@ -51,6 +52,7 @@ import {
51
52
  type DataSpaceElement,
52
53
  DataSpace,
53
54
  DataSpaceExecutionContext,
55
+ DataSpaceMappingProvider,
54
56
  DataSpaceSupportCombinedInfo,
55
57
  DataSpaceSupportEmail,
56
58
  DataSpaceDiagram,
@@ -144,43 +146,56 @@ export class DSL_DataSpace_PureProtocolProcessorPlugin
144
146
  elementProtocol.package,
145
147
  elementProtocol.name,
146
148
  );
147
- element.executionContexts = guaranteeNonNullable(
148
- elementProtocol.executionContexts,
149
- `Data product 'executionContexts' field is missing`,
150
- ).map((contextProtocol) => {
151
- const execContext = new DataSpaceExecutionContext();
152
- execContext.name = guaranteeNonEmptyString(
153
- contextProtocol.name,
154
- `Data product execution context 'name' field is missing or empty`,
155
- );
156
- execContext.title = contextProtocol.title;
157
- execContext.description = contextProtocol.description;
158
- execContext.mapping = PackageableElementExplicitReference.create(
159
- context.graph.getMapping(contextProtocol.mapping.path),
160
- );
161
- execContext.defaultRuntime =
162
- PackageableElementExplicitReference.create(
163
- context.graph.getRuntime(contextProtocol.defaultRuntime.path),
149
+ element.executionContexts = elementProtocol.executionContexts?.map(
150
+ (contextProtocol) => {
151
+ const execContext = new DataSpaceExecutionContext();
152
+ execContext.name = guaranteeNonEmptyString(
153
+ contextProtocol.name,
154
+ `Data product execution context 'name' field is missing or empty`,
164
155
  );
165
- execContext.testData = contextProtocol.testData
166
- ? guaranteeType(
167
- V1_buildEmbeddedData(contextProtocol.testData, context),
168
- DataElementReference,
156
+ execContext.title = contextProtocol.title;
157
+ execContext.description = contextProtocol.description;
158
+ execContext.mapping = contextProtocol.mapping
159
+ ? PackageableElementExplicitReference.create(
160
+ context.graph.getMapping(contextProtocol.mapping.path),
161
+ )
162
+ : undefined;
163
+ execContext.defaultRuntime = contextProtocol.defaultRuntime
164
+ ? PackageableElementExplicitReference.create(
165
+ context.graph.getRuntime(
166
+ contextProtocol.defaultRuntime.path,
167
+ ),
168
+ )
169
+ : undefined;
170
+ if (contextProtocol.mappingProvider) {
171
+ const mappingProvider = new DataSpaceMappingProvider();
172
+ mappingProvider.element = context.resolveElement(
173
+ contextProtocol.mappingProvider.element.path,
174
+ false,
175
+ );
176
+ mappingProvider.keys = contextProtocol.mappingProvider.keys;
177
+ execContext.mappingProvider = mappingProvider;
178
+ }
179
+ execContext.testData = contextProtocol.testData
180
+ ? guaranteeType(
181
+ V1_buildEmbeddedData(contextProtocol.testData, context),
182
+ DataElementReference,
183
+ )
184
+ : undefined;
185
+ return execContext;
186
+ },
187
+ );
188
+ element.defaultExecutionContext =
189
+ elementProtocol.defaultExecutionContext
190
+ ? guaranteeNonNullable(
191
+ element.executionContexts?.find(
192
+ (execContext) =>
193
+ execContext.name ===
194
+ elementProtocol.defaultExecutionContext,
195
+ ),
196
+ `Can't find default execution context '${elementProtocol.defaultExecutionContext}'`,
169
197
  )
170
198
  : undefined;
171
- return execContext;
172
- });
173
- element.defaultExecutionContext = guaranteeNonNullable(
174
- element.executionContexts.find(
175
- (execContext) =>
176
- execContext.name ===
177
- guaranteeNonEmptyString(
178
- elementProtocol.defaultExecutionContext,
179
- `Data product 'defaultExecutionContext' field is missing or empty`,
180
- ),
181
- ),
182
- `Can't find default execution context '${elementProtocol.defaultExecutionContext}'`,
183
- );
184
199
  context.currentSubGraph.setOwnElementInExtension(
185
200
  path,
186
201
  element,
@@ -426,20 +441,36 @@ export class DSL_DataSpace_PureProtocolProcessorPlugin
426
441
  protocol.taggedValues = metamodel.taggedValues.map(
427
442
  V1_transformTaggedValue,
428
443
  );
429
- protocol.executionContexts = metamodel.executionContexts.map(
444
+ protocol.executionContexts = metamodel.executionContexts?.map(
430
445
  (execContext) => {
431
446
  const contextProtocol = new V1_DataSpaceExecutionContext();
432
447
  contextProtocol.name = execContext.name;
433
448
  contextProtocol.title = execContext.title;
434
449
  contextProtocol.description = execContext.description;
435
- contextProtocol.mapping = new V1_PackageableElementPointer(
436
- PackageableElementPointerType.MAPPING,
437
- execContext.mapping.valueForSerialization ?? '',
438
- );
439
- contextProtocol.defaultRuntime = new V1_PackageableElementPointer(
440
- PackageableElementPointerType.RUNTIME,
441
- execContext.defaultRuntime.valueForSerialization ?? '',
442
- );
450
+ contextProtocol.mapping = execContext.mapping
451
+ ? new V1_PackageableElementPointer(
452
+ PackageableElementPointerType.MAPPING,
453
+ execContext.mapping.valueForSerialization ?? '',
454
+ )
455
+ : undefined;
456
+ contextProtocol.defaultRuntime = execContext.defaultRuntime
457
+ ? new V1_PackageableElementPointer(
458
+ PackageableElementPointerType.RUNTIME,
459
+ execContext.defaultRuntime.valueForSerialization ?? '',
460
+ )
461
+ : undefined;
462
+ if (execContext.mappingProvider) {
463
+ const mappingProviderProtocol =
464
+ new V1_DataSpaceMappingProvider();
465
+ mappingProviderProtocol.element =
466
+ new V1_PackageableElementPointer(
467
+ undefined,
468
+ execContext.mappingProvider.element.valueForSerialization ??
469
+ '',
470
+ );
471
+ mappingProviderProtocol.keys = execContext.mappingProvider.keys;
472
+ contextProtocol.mappingProvider = mappingProviderProtocol;
473
+ }
443
474
  contextProtocol.testData = execContext.testData
444
475
  ? guaranteeType(
445
476
  V1_transformEmbeddedData(execContext.testData, context),
@@ -450,7 +481,7 @@ export class DSL_DataSpace_PureProtocolProcessorPlugin
450
481
  },
451
482
  );
452
483
  protocol.defaultExecutionContext =
453
- metamodel.defaultExecutionContext.name;
484
+ metamodel.defaultExecutionContext?.name;
454
485
  protocol.title = metamodel.title;
455
486
  protocol.description = metamodel.description;
456
487
  protocol.elements = metamodel.elements?.map((pointer) => {
@@ -572,9 +603,16 @@ export class DSL_DataSpace_PureProtocolProcessorPlugin
572
603
  protocol.includedDataSpace,
573
604
  context,
574
605
  );
606
+ const defaultExecutionContext = guaranteeNonNullable(
607
+ dataSpace.value.defaultExecutionContext,
608
+ `Can't include data product '${protocol.includedDataSpace}' in a mapping: 'defaultExecutionContext' is required`,
609
+ );
575
610
  const includedMapping = new MappingIncludeDataSpace(
576
611
  parentMapping,
577
- dataSpace.value.defaultExecutionContext.mapping,
612
+ guaranteeNonNullable(
613
+ defaultExecutionContext.mapping,
614
+ `Can't include data product '${protocol.includedDataSpace}' in a mapping: default execution context 'mapping' is required`,
615
+ ),
578
616
  dataSpace,
579
617
  );
580
618
  return includedMapping;
@@ -652,25 +690,22 @@ export class DSL_DataSpace_PureProtocolProcessorPlugin
652
690
  V1_deserializeDataSpace(content),
653
691
  );
654
692
  if (v1DataSpace) {
655
- if (v1DataSpace.executionContexts.length === 1) {
656
- const exec = guaranteeNonNullable(
657
- v1DataSpace.executionContexts[0],
658
- );
693
+ const executionContexts = v1DataSpace.executionContexts ?? [];
694
+ if (executionContexts.length === 1) {
695
+ const exec = guaranteeNonNullable(executionContexts[0]);
659
696
  return {
660
- mapping: exec.mapping.path,
661
- runtime: exec.defaultRuntime.path,
697
+ mapping: exec.mapping?.path ?? '',
698
+ runtime: exec.defaultRuntime?.path ?? '',
662
699
  };
663
700
  }
664
701
  const resvoled =
665
702
  queryExec.executionKey ?? v1DataSpace.defaultExecutionContext;
666
703
  const resolvedExec = guaranteeNonNullable(
667
- v1DataSpace.executionContexts.find(
668
- (e) => e.name === resvoled,
669
- ),
704
+ executionContexts.find((e) => e.name === resvoled),
670
705
  );
671
706
  return {
672
- mapping: resolvedExec.mapping.path,
673
- runtime: resolvedExec.defaultRuntime.path,
707
+ mapping: resolvedExec.mapping?.path ?? '',
708
+ runtime: resolvedExec.defaultRuntime?.path ?? '',
674
709
  };
675
710
  }
676
711
  }
@@ -183,10 +183,10 @@ export class V1_DSL_DataSpace_PureGraphManagerExtension extends DSL_DataSpace_Pu
183
183
  execContext.executionKey;
184
184
  } else if (currentQuery.mapping && currentQuery.runtime) {
185
185
  dataSpaceTemplateExecutable.executionContextKey = guaranteeNonNullable(
186
- dataSpaceProtocol.executionContexts.filter(
186
+ dataSpaceProtocol.executionContexts?.filter(
187
187
  (ec) =>
188
- ec.mapping.path === currentQuery.mapping &&
189
- ec.defaultRuntime.path === currentQuery.runtime,
188
+ ec.mapping?.path === currentQuery.mapping &&
189
+ ec.defaultRuntime?.path === currentQuery.runtime,
190
190
  )[0]?.name,
191
191
  'can`t find a corresponding executatin key based on query`s mapping and runtime in data product',
192
192
  );
@@ -26,12 +26,26 @@ import {
26
26
  type V1_DataElementReference,
27
27
  } from '@finos/legend-graph';
28
28
 
29
+ export class V1_DataSpaceMappingProvider implements Hashable {
30
+ element!: V1_PackageableElementPointer;
31
+ keys: string[] = [];
32
+
33
+ get hashCode(): string {
34
+ return hashArray([
35
+ DATA_SPACE_HASH_STRUCTURE.DATA_SPACE_MAPPING_PROVIDER,
36
+ this.element.path,
37
+ hashArray(this.keys),
38
+ ]);
39
+ }
40
+ }
41
+
29
42
  export class V1_DataSpaceExecutionContext implements Hashable {
30
43
  name!: string;
31
44
  title?: string | undefined;
32
45
  description?: string | undefined;
33
- mapping!: V1_PackageableElementPointer;
34
- defaultRuntime!: V1_PackageableElementPointer;
46
+ mapping?: V1_PackageableElementPointer | undefined;
47
+ defaultRuntime?: V1_PackageableElementPointer | undefined;
48
+ mappingProvider?: V1_DataSpaceMappingProvider | undefined;
35
49
  testData: V1_DataElementReference | undefined;
36
50
 
37
51
  get hashCode(): string {
@@ -40,8 +54,9 @@ export class V1_DataSpaceExecutionContext implements Hashable {
40
54
  this.name,
41
55
  this.title ?? '',
42
56
  this.description ?? '',
43
- this.mapping.path,
44
- this.defaultRuntime.path,
57
+ this.mapping?.path ?? '',
58
+ this.defaultRuntime?.path ?? '',
59
+ this.mappingProvider ?? '',
45
60
  this.testData ?? '',
46
61
  ]);
47
62
  }
@@ -175,8 +190,8 @@ export class V1_DataSpace extends V1_PackageableElement implements Hashable {
175
190
  taggedValues: V1_TaggedValue[] = [];
176
191
  title?: string | undefined;
177
192
  description?: string | undefined;
178
- executionContexts!: V1_DataSpaceExecutionContext[];
179
- defaultExecutionContext!: string;
193
+ executionContexts?: V1_DataSpaceExecutionContext[] | undefined;
194
+ defaultExecutionContext?: string | undefined;
180
195
  elements?: V1_DataSpaceElementPointer[] | undefined;
181
196
  executables?: V1_DataSpaceExecutable[] | undefined;
182
197
  diagrams?: V1_DataSpaceDiagram[] | undefined;
@@ -189,8 +204,8 @@ export class V1_DataSpace extends V1_PackageableElement implements Hashable {
189
204
  hashArray(this.taggedValues),
190
205
  this.title ?? '',
191
206
  this.description ?? '',
192
- hashArray(this.executionContexts),
193
- this.defaultExecutionContext,
207
+ hashArray(this.executionContexts ?? []),
208
+ this.defaultExecutionContext ?? '',
194
209
  hashArray(this.elements ?? []),
195
210
  hashArray(this.executables ?? []),
196
211
  hashArray(this.diagrams ?? []),
@@ -48,6 +48,7 @@ import {
48
48
  type V1_DataSpaceExecutable,
49
49
  V1_DataSpace,
50
50
  V1_DataSpaceExecutionContext,
51
+ V1_DataSpaceMappingProvider,
51
52
  V1_DataSpaceSupportEmail,
52
53
  V1_DataSpaceSupportCombinedInfo,
53
54
  V1_DataSpaceDiagram,
@@ -64,12 +65,27 @@ const V1_DATA_SPACE_PACKAGEABLE_ELEMENT_EXECUTABLE =
64
65
  'dataSpacePackageableElementExecutable';
65
66
  const V1_DATA_SPACE_TEMPLATE_EXECUTABLE = 'dataSpaceTemplateExecutable';
66
67
 
68
+ const V1_dataSpaceMappingProviderModelSchema = createModelSchema(
69
+ V1_DataSpaceMappingProvider,
70
+ {
71
+ element: usingModelSchema(V1_packageableElementPointerModelSchema),
72
+ keys: list(primitive()),
73
+ },
74
+ );
75
+
67
76
  const V1_dataSpaceExecutionContextModelSchema = createModelSchema(
68
77
  V1_DataSpaceExecutionContext,
69
78
  {
70
- defaultRuntime: usingModelSchema(V1_packageableElementPointerModelSchema),
79
+ defaultRuntime: optional(
80
+ usingModelSchema(V1_packageableElementPointerModelSchema),
81
+ ),
71
82
  description: optional(primitive()),
72
- mapping: usingModelSchema(V1_packageableElementPointerModelSchema),
83
+ mapping: optional(
84
+ usingModelSchema(V1_packageableElementPointerModelSchema),
85
+ ),
86
+ mappingProvider: optional(
87
+ usingModelSchema(V1_dataSpaceMappingProviderModelSchema),
88
+ ),
73
89
  name: primitive(),
74
90
  title: optional(primitive()),
75
91
  testData: optional(usingModelSchema(V1_dataElementReferenceModelSchema)),
@@ -204,7 +220,7 @@ const V1_dataSpaceDiagramModelSchema = createModelSchema(V1_DataSpaceDiagram, {
204
220
 
205
221
  const V1_dataSpaceModelSchema = createModelSchema(V1_DataSpace, {
206
222
  _type: usingConstantValueSchema(V1_DATA_SPACE_ELEMENT_PROTOCOL_TYPE),
207
- defaultExecutionContext: primitive(),
223
+ defaultExecutionContext: optional(primitive()),
208
224
  description: optional(primitive()),
209
225
  diagrams: list(object(V1_dataSpaceDiagramModelSchema)),
210
226
  elements: optionalCustomListWithSchema(V1_dataSpaceElementPointerModelSchema),
@@ -214,7 +230,9 @@ const V1_dataSpaceModelSchema = createModelSchema(V1_DataSpace, {
214
230
  (val) => V1_deserializeDataspaceExecutable(val),
215
231
  ),
216
232
  ),
217
- executionContexts: list(object(V1_dataSpaceExecutionContextModelSchema)),
233
+ executionContexts: optional(
234
+ list(object(V1_dataSpaceExecutionContextModelSchema)),
235
+ ),
218
236
  featuredDiagrams: optionalCustomListWithSchema(
219
237
  V1_packageableElementPointerModelSchema,
220
238
  ),
@@ -286,8 +286,9 @@ export class DataSpaceQueryBuilderState extends QueryBuilderState {
286
286
  this.dataSpace.title,
287
287
  this.dataSpace.name,
288
288
  this.dataSpace.path,
289
- this.dataSpace.defaultExecutionContext.title ??
290
- this.dataSpace.defaultExecutionContext.name,
289
+ this.dataSpace.defaultExecutionContext?.title ??
290
+ this.dataSpace.defaultExecutionContext?.name ??
291
+ '',
291
292
  ),
292
293
  };
293
294
  }
@@ -316,8 +317,9 @@ export class DataSpaceQueryBuilderState extends QueryBuilderState {
316
317
  element.title,
317
318
  element.name,
318
319
  element.path,
319
- element.defaultExecutionContext.title ??
320
- element.defaultExecutionContext.name,
320
+ element.defaultExecutionContext?.title ??
321
+ element.defaultExecutionContext?.name ??
322
+ '',
321
323
  );
322
324
  }
323
325