@finos/legend-graph 24.0.0 → 24.1.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 (174) hide show
  1. package/lib/graph/BasicModel.d.ts +6 -0
  2. package/lib/graph/BasicModel.d.ts.map +1 -1
  3. package/lib/graph/BasicModel.js +23 -0
  4. package/lib/graph/BasicModel.js.map +1 -1
  5. package/lib/graph/Core_HashUtils.d.ts +6 -0
  6. package/lib/graph/Core_HashUtils.d.ts.map +1 -1
  7. package/lib/graph/Core_HashUtils.js +7 -0
  8. package/lib/graph/Core_HashUtils.js.map +1 -1
  9. package/lib/graph/DependencyManager.d.ts +3 -0
  10. package/lib/graph/DependencyManager.d.ts.map +1 -1
  11. package/lib/graph/DependencyManager.js +4 -0
  12. package/lib/graph/DependencyManager.js.map +1 -1
  13. package/lib/graph/MetaModelConst.d.ts +2 -0
  14. package/lib/graph/MetaModelConst.d.ts.map +1 -1
  15. package/lib/graph/MetaModelConst.js +2 -0
  16. package/lib/graph/MetaModelConst.js.map +1 -1
  17. package/lib/graph/PureModel.d.ts +2 -0
  18. package/lib/graph/PureModel.d.ts.map +1 -1
  19. package/lib/graph/PureModel.js +9 -0
  20. package/lib/graph/PureModel.js.map +1 -1
  21. package/lib/graph/helpers/PureLanguageHelper.d.ts +2 -1
  22. package/lib/graph/helpers/PureLanguageHelper.d.ts.map +1 -1
  23. package/lib/graph/helpers/PureLanguageHelper.js +1 -0
  24. package/lib/graph/helpers/PureLanguageHelper.js.map +1 -1
  25. package/lib/graph/metamodel/pure/packageableElements/PackageableElement.d.ts +2 -0
  26. package/lib/graph/metamodel/pure/packageableElements/PackageableElement.d.ts.map +1 -1
  27. package/lib/graph/metamodel/pure/packageableElements/PackageableElement.js.map +1 -1
  28. package/lib/graph/metamodel/pure/packageableElements/service/ExecutionEnvironmentInstance.d.ts +40 -0
  29. package/lib/graph/metamodel/pure/packageableElements/service/ExecutionEnvironmentInstance.d.ts.map +1 -0
  30. package/lib/graph/metamodel/pure/packageableElements/service/ExecutionEnvironmentInstance.js +58 -0
  31. package/lib/graph/metamodel/pure/packageableElements/service/ExecutionEnvironmentInstance.js.map +1 -0
  32. package/lib/graph/metamodel/pure/packageableElements/store/relational/connection/AuthenticationStrategy.d.ts +6 -0
  33. package/lib/graph/metamodel/pure/packageableElements/store/relational/connection/AuthenticationStrategy.d.ts.map +1 -1
  34. package/lib/graph/metamodel/pure/packageableElements/store/relational/connection/AuthenticationStrategy.js +16 -0
  35. package/lib/graph/metamodel/pure/packageableElements/store/relational/connection/AuthenticationStrategy.js.map +1 -1
  36. package/lib/graph/metamodel/pure/packageableElements/store/relational/connection/DatasourceSpecification.d.ts +17 -0
  37. package/lib/graph/metamodel/pure/packageableElements/store/relational/connection/DatasourceSpecification.d.ts.map +1 -1
  38. package/lib/graph/metamodel/pure/packageableElements/store/relational/connection/DatasourceSpecification.js +41 -0
  39. package/lib/graph/metamodel/pure/packageableElements/store/relational/connection/DatasourceSpecification.js.map +1 -1
  40. package/lib/graph/metamodel/pure/packageableElements/store/relational/connection/RelationalDatabaseConnection.d.ts +2 -1
  41. package/lib/graph/metamodel/pure/packageableElements/store/relational/connection/RelationalDatabaseConnection.d.ts.map +1 -1
  42. package/lib/graph/metamodel/pure/packageableElements/store/relational/connection/RelationalDatabaseConnection.js +1 -0
  43. package/lib/graph/metamodel/pure/packageableElements/store/relational/connection/RelationalDatabaseConnection.js.map +1 -1
  44. package/lib/graphManager/action/changeDetection/DSL_ExecutionEnvironment_ObseverHelper.d.ts +18 -0
  45. package/lib/graphManager/action/changeDetection/DSL_ExecutionEnvironment_ObseverHelper.d.ts.map +1 -0
  46. package/lib/graphManager/action/changeDetection/DSL_ExecutionEnvironment_ObseverHelper.js +26 -0
  47. package/lib/graphManager/action/changeDetection/DSL_ExecutionEnvironment_ObseverHelper.js.map +1 -0
  48. package/lib/graphManager/action/changeDetection/GraphObserverHelper.d.ts.map +1 -1
  49. package/lib/graphManager/action/changeDetection/GraphObserverHelper.js +4 -0
  50. package/lib/graphManager/action/changeDetection/GraphObserverHelper.js.map +1 -1
  51. package/lib/graphManager/action/changeDetection/PackageableElementObserver.d.ts.map +1 -1
  52. package/lib/graphManager/action/changeDetection/PackageableElementObserver.js +4 -0
  53. package/lib/graphManager/action/changeDetection/PackageableElementObserver.js.map +1 -1
  54. package/lib/graphManager/action/changeDetection/STO_Relational_ObserverHelper.d.ts +5 -2
  55. package/lib/graphManager/action/changeDetection/STO_Relational_ObserverHelper.d.ts.map +1 -1
  56. package/lib/graphManager/action/changeDetection/STO_Relational_ObserverHelper.js +31 -2
  57. package/lib/graphManager/action/changeDetection/STO_Relational_ObserverHelper.js.map +1 -1
  58. package/lib/graphManager/protocol/pure/v1/V1_PureGraphManager.d.ts +2 -0
  59. package/lib/graphManager/protocol/pure/v1/V1_PureGraphManager.d.ts.map +1 -1
  60. package/lib/graphManager/protocol/pure/v1/V1_PureGraphManager.js +10 -1
  61. package/lib/graphManager/protocol/pure/v1/V1_PureGraphManager.js.map +1 -1
  62. package/lib/graphManager/protocol/pure/v1/model/packageableElements/V1_PackageableElement.d.ts +2 -0
  63. package/lib/graphManager/protocol/pure/v1/model/packageableElements/V1_PackageableElement.d.ts.map +1 -1
  64. package/lib/graphManager/protocol/pure/v1/model/packageableElements/V1_PackageableElement.js.map +1 -1
  65. package/lib/graphManager/protocol/pure/v1/model/packageableElements/service/V1_ExecutionEnvironmentInstance.d.ts +38 -0
  66. package/lib/graphManager/protocol/pure/v1/model/packageableElements/service/V1_ExecutionEnvironmentInstance.d.ts.map +1 -0
  67. package/lib/graphManager/protocol/pure/v1/model/packageableElements/service/V1_ExecutionEnvironmentInstance.js +58 -0
  68. package/lib/graphManager/protocol/pure/v1/model/packageableElements/service/V1_ExecutionEnvironmentInstance.js.map +1 -0
  69. package/lib/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_AuthenticationStrategy.d.ts +5 -0
  70. package/lib/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_AuthenticationStrategy.d.ts.map +1 -1
  71. package/lib/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_AuthenticationStrategy.js +11 -0
  72. package/lib/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_AuthenticationStrategy.js.map +1 -1
  73. package/lib/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_DatasourceSpecification.d.ts +15 -0
  74. package/lib/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_DatasourceSpecification.d.ts.map +1 -1
  75. package/lib/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_DatasourceSpecification.js +32 -0
  76. package/lib/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_DatasourceSpecification.js.map +1 -1
  77. package/lib/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_RelationalDatabaseConnection.d.ts +2 -1
  78. package/lib/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_RelationalDatabaseConnection.d.ts.map +1 -1
  79. package/lib/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_RelationalDatabaseConnection.js +1 -0
  80. package/lib/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_RelationalDatabaseConnection.js.map +1 -1
  81. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_ConnectionTransformer.d.ts.map +1 -1
  82. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_ConnectionTransformer.js +29 -4
  83. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_ConnectionTransformer.js.map +1 -1
  84. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_ExecutionEnvironmentTransformer.d.ts +20 -0
  85. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_ExecutionEnvironmentTransformer.d.ts.map +1 -0
  86. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_ExecutionEnvironmentTransformer.js +46 -0
  87. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_ExecutionEnvironmentTransformer.js.map +1 -0
  88. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_PackageableElementTransformer.d.ts.map +1 -1
  89. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_PackageableElementTransformer.js +4 -0
  90. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_PackageableElementTransformer.js.map +1 -1
  91. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFifthPassBuilder.d.ts +2 -0
  92. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFifthPassBuilder.d.ts.map +1 -1
  93. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFifthPassBuilder.js +3 -0
  94. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFifthPassBuilder.js.map +1 -1
  95. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFirstPassBuilder.d.ts +2 -0
  96. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFirstPassBuilder.d.ts.map +1 -1
  97. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFirstPassBuilder.js +11 -0
  98. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFirstPassBuilder.js.map +1 -1
  99. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFourthPassBuilder.d.ts +2 -0
  100. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFourthPassBuilder.d.ts.map +1 -1
  101. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFourthPassBuilder.js +3 -0
  102. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFourthPassBuilder.js.map +1 -1
  103. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementSecondPassBuilder.d.ts +2 -0
  104. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementSecondPassBuilder.d.ts.map +1 -1
  105. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementSecondPassBuilder.js +5 -0
  106. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementSecondPassBuilder.js.map +1 -1
  107. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementThirdPassBuilder.d.ts +2 -0
  108. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementThirdPassBuilder.d.ts.map +1 -1
  109. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementThirdPassBuilder.js +3 -0
  110. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementThirdPassBuilder.js.map +1 -1
  111. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ExecutionEnvironmentBuilderHelper.d.ts +21 -0
  112. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ExecutionEnvironmentBuilderHelper.d.ts.map +1 -0
  113. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ExecutionEnvironmentBuilderHelper.js +51 -0
  114. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ExecutionEnvironmentBuilderHelper.js.map +1 -0
  115. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_RelationalConnectionBuilderHelper.d.ts.map +1 -1
  116. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_RelationalConnectionBuilderHelper.js +23 -4
  117. package/lib/graphManager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_RelationalConnectionBuilderHelper.js.map +1 -1
  118. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/V1_PackageableElementSerialization.d.ts.map +1 -1
  119. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/V1_PackageableElementSerialization.js +6 -0
  120. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/V1_PackageableElementSerialization.js.map +1 -1
  121. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper.d.ts.map +1 -1
  122. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper.js +34 -3
  123. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper.js.map +1 -1
  124. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ExecutionEnvironmentSerializationHelper.d.ts +20 -0
  125. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ExecutionEnvironmentSerializationHelper.d.ts.map +1 -0
  126. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ExecutionEnvironmentSerializationHelper.js +63 -0
  127. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ExecutionEnvironmentSerializationHelper.js.map +1 -0
  128. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.d.ts +3 -0
  129. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.d.ts.map +1 -1
  130. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.js +5 -17
  131. package/lib/graphManager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.js.map +1 -1
  132. package/lib/index.d.ts +2 -1
  133. package/lib/index.d.ts.map +1 -1
  134. package/lib/index.js +2 -1
  135. package/lib/index.js.map +1 -1
  136. package/lib/package.json +1 -1
  137. package/package.json +3 -3
  138. package/src/graph/BasicModel.ts +33 -0
  139. package/src/graph/Core_HashUtils.ts +7 -0
  140. package/src/graph/DependencyManager.ts +10 -0
  141. package/src/graph/MetaModelConst.ts +2 -0
  142. package/src/graph/PureModel.ts +11 -0
  143. package/src/graph/helpers/PureLanguageHelper.ts +1 -0
  144. package/src/graph/metamodel/pure/packageableElements/PackageableElement.ts +2 -0
  145. package/src/graph/metamodel/pure/packageableElements/service/ExecutionEnvironmentInstance.ts +78 -0
  146. package/src/graph/metamodel/pure/packageableElements/store/relational/connection/AuthenticationStrategy.ts +25 -0
  147. package/src/graph/metamodel/pure/packageableElements/store/relational/connection/DatasourceSpecification.ts +53 -0
  148. package/src/graph/metamodel/pure/packageableElements/store/relational/connection/RelationalDatabaseConnection.ts +1 -0
  149. package/src/graphManager/action/changeDetection/DSL_ExecutionEnvironment_ObseverHelper.ts +40 -0
  150. package/src/graphManager/action/changeDetection/GraphObserverHelper.ts +5 -0
  151. package/src/graphManager/action/changeDetection/PackageableElementObserver.ts +8 -0
  152. package/src/graphManager/action/changeDetection/STO_Relational_ObserverHelper.ts +47 -0
  153. package/src/graphManager/protocol/pure/v1/V1_PureGraphManager.ts +22 -1
  154. package/src/graphManager/protocol/pure/v1/model/packageableElements/V1_PackageableElement.ts +4 -0
  155. package/src/graphManager/protocol/pure/v1/model/packageableElements/service/V1_ExecutionEnvironmentInstance.ts +82 -0
  156. package/src/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_AuthenticationStrategy.ts +16 -0
  157. package/src/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_DatasourceSpecification.ts +39 -0
  158. package/src/graphManager/protocol/pure/v1/model/packageableElements/store/relational/connection/V1_RelationalDatabaseConnection.ts +1 -0
  159. package/src/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_ConnectionTransformer.ts +33 -0
  160. package/src/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_ExecutionEnvironmentTransformer.ts +72 -0
  161. package/src/graphManager/protocol/pure/v1/transformation/pureGraph/from/V1_PackageableElementTransformer.ts +8 -0
  162. package/src/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFifthPassBuilder.ts +7 -0
  163. package/src/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFirstPassBuilder.ts +28 -0
  164. package/src/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementFourthPassBuilder.ts +7 -0
  165. package/src/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementSecondPassBuilder.ts +13 -0
  166. package/src/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementThirdPassBuilder.ts +7 -0
  167. package/src/graphManager/protocol/pure/v1/transformation/pureGraph/to/V1_ExecutionEnvironmentBuilderHelper.ts +88 -0
  168. package/src/graphManager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_RelationalConnectionBuilderHelper.ts +46 -0
  169. package/src/graphManager/protocol/pure/v1/transformation/pureProtocol/V1_PackageableElementSerialization.ts +13 -0
  170. package/src/graphManager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ConnectionSerializationHelper.ts +50 -0
  171. package/src/graphManager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ExecutionEnvironmentSerializationHelper.ts +120 -0
  172. package/src/graphManager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.ts +6 -22
  173. package/src/index.ts +2 -1
  174. package/tsconfig.json +6 -0
@@ -41,6 +41,7 @@ import type { Measure } from './domain/Measure.js';
41
41
  import type { SectionIndex } from './section/SectionIndex.js';
42
42
  import type { DataElement } from './data/DataElement.js';
43
43
  import { AnnotatedElement } from './domain/AnnotatedElement.js';
44
+ import type { ExecutionEnvironmentInstance } from './service/ExecutionEnvironmentInstance.js';
44
45
 
45
46
  export interface PackageableElementVisitor<T> {
46
47
  visit_PackageableElement(element: PackageableElement): T;
@@ -63,6 +64,7 @@ export interface PackageableElementVisitor<T> {
63
64
  visit_FileGenerationSpecification(element: FileGenerationSpecification): T;
64
65
  visit_GenerationSpecification(element: GenerationSpecification): T;
65
66
  visit_DataElement(element: DataElement): T;
67
+ visit_ExecutionEnvironmentInstance(element: ExecutionEnvironmentInstance): T;
66
68
  }
67
69
 
68
70
  class ModelElement extends AnnotatedElement {
@@ -0,0 +1,78 @@
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 { hashArray, type Hashable } from '@finos/legend-shared';
18
+ import { CORE_HASH_STRUCTURE } from '../../../../../graph/Core_HashUtils.js';
19
+ import type { Mapping } from '../mapping/Mapping.js';
20
+ import type { Runtime } from '../runtime/Runtime.js';
21
+ import {
22
+ type PackageableElementVisitor,
23
+ PackageableElement,
24
+ } from '../PackageableElement.js';
25
+ import type { PackageableElementReference } from '../PackageableElementReference.js';
26
+
27
+ export class ExecutionEnvironmentInstance
28
+ extends PackageableElement
29
+ implements Hashable
30
+ {
31
+ executionParameters: ExecutionParameters[] = [];
32
+
33
+ protected override get _elementHashCode(): string {
34
+ return hashArray([
35
+ CORE_HASH_STRUCTURE.EXECUTION_ENVIRONMENT_INSTANCE,
36
+ this.path,
37
+ hashArray(this.executionParameters),
38
+ ]);
39
+ }
40
+
41
+ accept_PackageableElementVisitor<T>(
42
+ visitor: PackageableElementVisitor<T>,
43
+ ): T {
44
+ return visitor.visit_ExecutionEnvironmentInstance(this);
45
+ }
46
+ }
47
+
48
+ export abstract class ExecutionParameters implements Hashable {
49
+ abstract get hashCode(): string;
50
+ }
51
+
52
+ export class SingleExecutionParameters implements Hashable {
53
+ key!: string;
54
+ mapping!: PackageableElementReference<Mapping>;
55
+ runtime!: Runtime;
56
+
57
+ get hashCode(): string {
58
+ return hashArray([
59
+ CORE_HASH_STRUCTURE.SINGLE_EXECUTION_PARAMETER,
60
+ this.key,
61
+ this.mapping.valueForSerialization ?? '',
62
+ this.runtime,
63
+ ]);
64
+ }
65
+ }
66
+
67
+ export class MultiExecutionParameters implements Hashable {
68
+ masterKey!: string;
69
+ singleExecutionParameters: SingleExecutionParameters[] = [];
70
+
71
+ get hashCode(): string {
72
+ return hashArray([
73
+ CORE_HASH_STRUCTURE.MULTI_EXECUTION_PARAMETER,
74
+ this.masterKey,
75
+ hashArray(this.singleExecutionParameters),
76
+ ]);
77
+ }
78
+ }
@@ -189,3 +189,28 @@ export class MiddleTierUsernamePasswordAuthenticationStrategy
189
189
  ]);
190
190
  }
191
191
  }
192
+
193
+ export class TrinoDelegatedKerberosAuthenticationStrategy
194
+ extends AuthenticationStrategy
195
+ implements Hashable
196
+ {
197
+ kerberosRemoteServiceName: string;
198
+ kerberosUseCanonicalHostname: boolean;
199
+
200
+ constructor(
201
+ kerberosRemoteServiceName: string,
202
+ kerberosUseCanonicalHostname: boolean,
203
+ ) {
204
+ super();
205
+ this.kerberosRemoteServiceName = kerberosRemoteServiceName;
206
+ this.kerberosUseCanonicalHostname = kerberosUseCanonicalHostname;
207
+ }
208
+
209
+ get hashCode(): string {
210
+ return hashArray([
211
+ CORE_HASH_STRUCTURE.TRINO_DELEGATED_KERBEROS_AUTHENTICATION_STRATEGY,
212
+ this.kerberosRemoteServiceName,
213
+ this.kerberosUseCanonicalHostname.toString(),
214
+ ]);
215
+ }
216
+ }
@@ -276,3 +276,56 @@ export class SpannerDatasourceSpecification
276
276
  ]);
277
277
  }
278
278
  }
279
+ export class TrinoSslSpecification implements Hashable {
280
+ ssl: boolean;
281
+ trustStorePathVaultReference?: string | undefined;
282
+ trustStorePasswordVaultReference?: string | undefined;
283
+
284
+ constructor(ssl: boolean) {
285
+ this.ssl = ssl;
286
+ }
287
+
288
+ get hashCode(): string {
289
+ return hashArray([
290
+ CORE_HASH_STRUCTURE.TRINO_SSL_SPECIFICATION,
291
+ this.ssl.toString(),
292
+ this.trustStorePathVaultReference ?? '',
293
+ this.trustStorePasswordVaultReference ?? '',
294
+ ]);
295
+ }
296
+ }
297
+
298
+ export class TrinoDatasourceSpecification
299
+ extends DatasourceSpecification
300
+ implements Hashable
301
+ {
302
+ host: string;
303
+ port: number;
304
+ sslSpecification: TrinoSslSpecification;
305
+ catalog?: string | undefined;
306
+ schema?: string | undefined;
307
+ clientTags?: string | undefined;
308
+
309
+ constructor(
310
+ host: string,
311
+ port: number,
312
+ sslSpecification: TrinoSslSpecification,
313
+ ) {
314
+ super();
315
+ this.host = host;
316
+ this.port = port;
317
+ this.sslSpecification = sslSpecification;
318
+ }
319
+
320
+ get hashCode(): string {
321
+ return hashArray([
322
+ CORE_HASH_STRUCTURE.TRINO_DATASOURCE_SPECIFICATION,
323
+ this.host,
324
+ this.port.toString(),
325
+ this.sslSpecification,
326
+ this.catalog ?? '',
327
+ this.schema ?? '',
328
+ this.clientTags ?? '',
329
+ ]);
330
+ }
331
+ }
@@ -49,6 +49,7 @@ export enum DatabaseType {
49
49
  Redshift = 'Redshift',
50
50
  BigQuery = 'BigQuery',
51
51
  Spanner = 'Spanner',
52
+ Trino = 'Trino',
52
53
  }
53
54
 
54
55
  export abstract class DatabaseConnection extends Connection {
@@ -0,0 +1,40 @@
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 { makeObservable, override } from 'mobx';
18
+ import type { ExecutionEnvironmentInstance } from '../../../graph/metamodel/pure/packageableElements/service/ExecutionEnvironmentInstance.js';
19
+ import {
20
+ observe_Abstract_PackageableElement,
21
+ skipObservedWithContext,
22
+ } from './CoreObserverHelper.js';
23
+
24
+ export const observe_ExecutionEnvironmentInstance = skipObservedWithContext(
25
+ (
26
+ metamodel: ExecutionEnvironmentInstance,
27
+ context,
28
+ ): ExecutionEnvironmentInstance => {
29
+ observe_Abstract_PackageableElement(metamodel);
30
+
31
+ makeObservable<ExecutionEnvironmentInstance, '_elementHashCode'>(
32
+ metamodel,
33
+ {
34
+ _elementHashCode: override,
35
+ },
36
+ );
37
+ // TODO once form is implemented
38
+ return metamodel;
39
+ },
40
+ );
@@ -50,6 +50,7 @@ const observe_Abstract_BasicModel = (metamodel: BasicModel): void => {
50
50
  | 'generationSpecificationsIndex'
51
51
  | 'fileGenerationsIndex'
52
52
  | 'dataElementsIndex'
53
+ | 'executionEnvironmentIndex'
53
54
  >(metamodel, {
54
55
  elementSectionIndex: observable,
55
56
  extensions: observable,
@@ -67,6 +68,7 @@ const observe_Abstract_BasicModel = (metamodel: BasicModel): void => {
67
68
  generationSpecificationsIndex: observable,
68
69
  fileGenerationsIndex: observable,
69
70
  dataElementsIndex: observable,
71
+ executionEnvironmentIndex: observable,
70
72
 
71
73
  ownSectionIndices: computed,
72
74
  ownProfiles: computed,
@@ -86,6 +88,7 @@ const observe_Abstract_BasicModel = (metamodel: BasicModel): void => {
86
88
  ownFileGenerations: computed,
87
89
  ownGenerationSpecifications: computed,
88
90
  ownDataElements: computed,
91
+ ownExecutionEnvironments: computed,
89
92
 
90
93
  allOwnElements: computed,
91
94
  });
@@ -120,6 +123,7 @@ export const observe_DependencyManager = skipObserved(
120
123
  generationSpecifications: computed,
121
124
  fileGenerations: computed,
122
125
  dataElements: computed,
126
+ executionEnvironments: computed,
123
127
 
124
128
  allOwnElements: computed,
125
129
  }),
@@ -166,6 +170,7 @@ export const observe_Graph = (metamodel: PureModel): PureModel => {
166
170
  generationSpecifications: computed,
167
171
  fileGenerations: computed,
168
172
  dataElements: computed,
173
+ executionEnvironments: computed,
169
174
 
170
175
  allElements: computed,
171
176
  allOwnTestables: computed,
@@ -63,6 +63,8 @@ import { observe_FlatData } from './STO_FlatData_ObserverHelper.js';
63
63
  import { observe_Database } from './STO_Relational_ObserverHelper.js';
64
64
  import type { DataElement } from '../../../graph/metamodel/pure/packageableElements/data/DataElement.js';
65
65
  import { observe_DataElement } from './DSL_Data_ObserverHelper.js';
66
+ import type { ExecutionEnvironmentInstance } from '../../../graph/metamodel/pure/packageableElements/service/ExecutionEnvironmentInstance.js';
67
+ import { observe_ExecutionEnvironmentInstance } from './DSL_ExecutionEnvironment_ObseverHelper.js';
66
68
 
67
69
  class PackageableElementObserver implements PackageableElementVisitor<void> {
68
70
  observerContext: ObserverContext;
@@ -135,6 +137,12 @@ class PackageableElementObserver implements PackageableElementVisitor<void> {
135
137
  observe_Service(element, this.observerContext);
136
138
  }
137
139
 
140
+ visit_ExecutionEnvironmentInstance(
141
+ element: ExecutionEnvironmentInstance,
142
+ ): void {
143
+ observe_ExecutionEnvironmentInstance(element, this.observerContext);
144
+ }
145
+
138
146
  visit_PackageableRuntime(element: PackageableRuntime): void {
139
147
  observe_PackageableRuntime(element, this.observerContext);
140
148
  }
@@ -26,9 +26,11 @@ import {
26
26
  UsernamePasswordAuthenticationStrategy,
27
27
  GCPWorkloadIdentityFederationAuthenticationStrategy,
28
28
  MiddleTierUsernamePasswordAuthenticationStrategy,
29
+ TrinoDelegatedKerberosAuthenticationStrategy,
29
30
  } from '../../../graph/metamodel/pure/packageableElements/store/relational/connection/AuthenticationStrategy.js';
30
31
  import {
31
32
  type DatasourceSpecification,
33
+ type TrinoSslSpecification,
32
34
  BigQueryDatasourceSpecification,
33
35
  DatabricksDatasourceSpecification,
34
36
  EmbeddedH2DatasourceSpecification,
@@ -37,6 +39,7 @@ import {
37
39
  SnowflakeDatasourceSpecification,
38
40
  StaticDatasourceSpecification,
39
41
  SpannerDatasourceSpecification,
42
+ TrinoDatasourceSpecification,
40
43
  } from '../../../graph/metamodel/pure/packageableElements/store/relational/connection/DatasourceSpecification.js';
41
44
  import {
42
45
  type Mapper,
@@ -841,6 +844,32 @@ export const observe_SpannerDatasourceSpecification = skipObserved(
841
844
  }),
842
845
  );
843
846
 
847
+ export const observe_TrinoSslSpecification = skipObserved(
848
+ (metamodel: TrinoSslSpecification): TrinoSslSpecification =>
849
+ makeObservable(metamodel, {
850
+ ssl: observable,
851
+ trustStorePathVaultReference: observable,
852
+ trustStorePasswordVaultReference: observable,
853
+ hashCode: computed,
854
+ }),
855
+ );
856
+
857
+ export const observe_TrinoDatasourceSpecification = skipObserved(
858
+ (metamodel: TrinoDatasourceSpecification): TrinoDatasourceSpecification => {
859
+ makeObservable(metamodel, {
860
+ host: observable,
861
+ port: observable,
862
+ catalog: observable,
863
+ schema: observable,
864
+ clientTags: observable,
865
+ hashCode: computed,
866
+ });
867
+ observe_TrinoSslSpecification(metamodel.sslSpecification);
868
+
869
+ return metamodel;
870
+ },
871
+ );
872
+
844
873
  export const observe_DatasourceSpecification = (
845
874
  metamodel: DatasourceSpecification,
846
875
  context: ObserverContext,
@@ -861,6 +890,8 @@ export const observe_DatasourceSpecification = (
861
890
  return observe_BigQueryDatasourceSpecification(metamodel);
862
891
  } else if (metamodel instanceof SpannerDatasourceSpecification) {
863
892
  return observe_SpannerDatasourceSpecification(metamodel);
893
+ } else if (metamodel instanceof TrinoDatasourceSpecification) {
894
+ return observe_TrinoDatasourceSpecification(metamodel);
864
895
  }
865
896
  const extraObservers = context.plugins.flatMap(
866
897
  (plugin) =>
@@ -970,6 +1001,18 @@ export const observe_MiddleTierUsernamePasswordAuthenticationStrategy =
970
1001
  }),
971
1002
  );
972
1003
 
1004
+ export const observe_TrinoDelegatedKerberosAuthenticationStrategy =
1005
+ skipObserved(
1006
+ (
1007
+ metamodel: TrinoDelegatedKerberosAuthenticationStrategy,
1008
+ ): TrinoDelegatedKerberosAuthenticationStrategy =>
1009
+ makeObservable(metamodel, {
1010
+ hashCode: computed,
1011
+ kerberosRemoteServiceName: observable,
1012
+ kerberosUseCanonicalHostname: observable,
1013
+ }),
1014
+ );
1015
+
973
1016
  export const observe_AuthenticationStrategy = (
974
1017
  metamodel: AuthenticationStrategy,
975
1018
  context: ObserverContext,
@@ -1002,6 +1045,10 @@ export const observe_AuthenticationStrategy = (
1002
1045
  metamodel instanceof MiddleTierUsernamePasswordAuthenticationStrategy
1003
1046
  ) {
1004
1047
  return observe_MiddleTierUsernamePasswordAuthenticationStrategy(metamodel);
1048
+ } else if (
1049
+ metamodel instanceof TrinoDelegatedKerberosAuthenticationStrategy
1050
+ ) {
1051
+ return observe_TrinoDelegatedKerberosAuthenticationStrategy(metamodel);
1005
1052
  }
1006
1053
  const extraObservers = context.plugins.flatMap(
1007
1054
  (plugin) =>
@@ -279,6 +279,7 @@ import {
279
279
  import { MultiExecutionServiceTestResult } from '../../../../graph/metamodel/pure/packageableElements/service/MultiExecutionServiceTestResult.js';
280
280
  import type { ParameterValue } from '../../../../graph/metamodel/pure/packageableElements/service/ParameterValue.js';
281
281
  import type { Service } from '../../../../graph/metamodel/pure/packageableElements/service/Service.js';
282
+ import { V1_ExecutionEnvironmentInstance } from './model/packageableElements/service/V1_ExecutionEnvironmentInstance.js';
282
283
 
283
284
  class V1_PureModelContextDataIndex {
284
285
  elements: V1_PackageableElement[] = [];
@@ -305,6 +306,8 @@ class V1_PureModelContextDataIndex {
305
306
 
306
307
  dataElements: V1_DataElement[] = [];
307
308
 
309
+ executionEnvironments: V1_ExecutionEnvironmentInstance[] = [];
310
+
308
311
  otherElementsByBuilder: Map<
309
312
  V1_ElementBuilder<V1_PackageableElement>,
310
313
  V1_PackageableElement[]
@@ -369,6 +372,8 @@ export const V1_indexPureModelContextData = (
369
372
  index.generationSpecifications.push(el);
370
373
  } else if (el instanceof V1_DataElement) {
371
374
  index.dataElements.push(el);
375
+ } else if (el instanceof V1_ExecutionEnvironmentInstance) {
376
+ index.executionEnvironments.push(el);
372
377
  } else {
373
378
  const clazz = getClass<V1_PackageableElement>(el);
374
379
  if (otherElementsByClass.has(clazz)) {
@@ -985,7 +990,9 @@ export class V1_PureGraphManager extends AbstractPureGraphManager {
985
990
  );
986
991
 
987
992
  // build services
988
- graphBuilderState.setMessage(`Building services...`);
993
+ graphBuilderState.setMessage(
994
+ `Building services and execution environments...`,
995
+ );
989
996
  await this.buildServices(graph, inputs, options);
990
997
  stopWatch.record(GRAPH_MANAGER_EVENT.GRAPH_BUILDER_BUILD_SERVICES__SUCCESS);
991
998
 
@@ -1381,6 +1388,18 @@ export class V1_PureGraphManager extends AbstractPureGraphManager {
1381
1388
  ),
1382
1389
  ),
1383
1390
  );
1391
+ await Promise.all(
1392
+ inputs.flatMap((input) =>
1393
+ input.data.executionEnvironments.map((element) =>
1394
+ this.visitWithGraphBuilderErrorHandling(
1395
+ element,
1396
+ new V1_ElementSecondPassBuilder(
1397
+ this.getBuilderContext(graph, input.model, element, options),
1398
+ ),
1399
+ ),
1400
+ ),
1401
+ ),
1402
+ );
1384
1403
  }
1385
1404
 
1386
1405
  private async buildDataElements(
@@ -3212,6 +3231,8 @@ export class V1_PureGraphManager extends AbstractPureGraphManager {
3212
3231
  return CORE_PURE_PATH.FLAT_DATA;
3213
3232
  } else if (protocol instanceof V1_Database) {
3214
3233
  return CORE_PURE_PATH.DATABASE;
3234
+ } else if (protocol instanceof V1_ExecutionEnvironmentInstance) {
3235
+ return CORE_PURE_PATH.EXECUTION_ENVIRONMENT;
3215
3236
  } else if (protocol instanceof V1_Service) {
3216
3237
  return CORE_PURE_PATH.SERVICE;
3217
3238
  } else if (protocol instanceof V1_FileGenerationSpecification) {
@@ -33,6 +33,7 @@ import type { V1_Measure } from './domain/V1_Measure.js';
33
33
  import type { V1_SectionIndex } from './section/V1_SectionIndex.js';
34
34
  import type { V1_DataElement } from './data/V1_DataElement.js';
35
35
  import { ELEMENT_PATH_DELIMITER } from '../../../../../../graph/MetaModelConst.js';
36
+ import type { V1_ExecutionEnvironmentInstance } from './service/V1_ExecutionEnvironmentInstance.js';
36
37
 
37
38
  export interface V1_PackageableElementVisitor<T> {
38
39
  visit_PackageableElement(element: V1_PackageableElement): T;
@@ -53,6 +54,9 @@ export interface V1_PackageableElementVisitor<T> {
53
54
  visit_GenerationSpecification(element: V1_GenerationSpecification): T;
54
55
  visit_FileGeneration(element: V1_FileGenerationSpecification): T;
55
56
  visit_DataElement(element: V1_DataElement): T;
57
+ visit_ExecutionEnvironmentInstance(
58
+ element: V1_ExecutionEnvironmentInstance,
59
+ ): T;
56
60
  }
57
61
 
58
62
  export abstract class V1_PackageableElement implements Hashable {
@@ -0,0 +1,82 @@
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 { type Hashable, hashArray } from '@finos/legend-shared';
18
+ import { CORE_HASH_STRUCTURE } from '../../../../../../../graph/Core_HashUtils.js';
19
+ import type { V1_Runtime } from '../runtime/V1_Runtime.js';
20
+ import {
21
+ V1_PackageableElement,
22
+ type V1_PackageableElementVisitor,
23
+ } from '../V1_PackageableElement.js';
24
+
25
+ export class V1_ExecutionEnvironmentInstance
26
+ extends V1_PackageableElement
27
+ implements Hashable
28
+ {
29
+ executionParameters: V1_ExecutionParameters[] = [];
30
+
31
+ override get hashCode(): string {
32
+ return hashArray([
33
+ CORE_HASH_STRUCTURE.EXECUTION_ENVIRONMENT_INSTANCE,
34
+ this.path,
35
+ hashArray(this.executionParameters),
36
+ ]);
37
+ }
38
+
39
+ accept_PackageableElementVisitor<T>(
40
+ visitor: V1_PackageableElementVisitor<T>,
41
+ ): T {
42
+ return visitor.visit_ExecutionEnvironmentInstance(this);
43
+ }
44
+ }
45
+
46
+ export abstract class V1_ExecutionParameters implements Hashable {
47
+ abstract get hashCode(): string;
48
+ }
49
+
50
+ export class V1_SingleExecutionParameters
51
+ extends V1_ExecutionParameters
52
+ implements Hashable
53
+ {
54
+ key!: string;
55
+ mapping!: string;
56
+ runtime!: V1_Runtime;
57
+
58
+ get hashCode(): string {
59
+ return hashArray([
60
+ CORE_HASH_STRUCTURE.SINGLE_EXECUTION_PARAMETER,
61
+ this.key,
62
+ this.mapping,
63
+ this.runtime,
64
+ ]);
65
+ }
66
+ }
67
+
68
+ export class V1_MultiExecutionParameters
69
+ extends V1_ExecutionParameters
70
+ implements Hashable
71
+ {
72
+ masterKey!: string;
73
+ singleExecutionParameters: V1_SingleExecutionParameters[] = [];
74
+
75
+ get hashCode(): string {
76
+ return hashArray([
77
+ CORE_HASH_STRUCTURE.MULTI_EXECUTION_PARAMETER,
78
+ this.masterKey,
79
+ hashArray(this.singleExecutionParameters),
80
+ ]);
81
+ }
82
+ }
@@ -149,3 +149,19 @@ export class V1_MiddleTierUsernamePasswordAuthenticationStrategy
149
149
  ]);
150
150
  }
151
151
  }
152
+
153
+ export class V1_TrinoDelegatedKerberosAuthenticationStrategy
154
+ extends V1_AuthenticationStrategy
155
+ implements Hashable
156
+ {
157
+ kerberosRemoteServiceName!: string;
158
+ kerberosUseCanonicalHostname!: boolean;
159
+
160
+ get hashCode(): string {
161
+ return hashArray([
162
+ CORE_HASH_STRUCTURE.TRINO_DELEGATED_KERBEROS_AUTHENTICATION_STRATEGY,
163
+ this.kerberosRemoteServiceName,
164
+ this.kerberosUseCanonicalHostname.toString(),
165
+ ]);
166
+ }
167
+ }
@@ -194,3 +194,42 @@ export class V1_LocalH2DataSourceSpecification
194
194
  ]);
195
195
  }
196
196
  }
197
+
198
+ export class V1_TrinoSslSpecification implements Hashable {
199
+ ssl!: boolean;
200
+ trustStorePathVaultReference?: string | undefined;
201
+ trustStorePasswordVaultReference?: string | undefined;
202
+
203
+ get hashCode(): string {
204
+ return hashArray([
205
+ CORE_HASH_STRUCTURE.TRINO_SSL_SPECIFICATION,
206
+ this.ssl.toString(),
207
+ this.trustStorePathVaultReference ?? '',
208
+ this.trustStorePasswordVaultReference ?? '',
209
+ ]);
210
+ }
211
+ }
212
+
213
+ export class V1_TrinoDatasourceSpecification
214
+ extends V1_DatasourceSpecification
215
+ implements Hashable
216
+ {
217
+ host!: string;
218
+ port!: number;
219
+ sslSpecification!: V1_TrinoSslSpecification;
220
+ catalog?: string | undefined;
221
+ schema?: string | undefined;
222
+ clientTags?: string | undefined;
223
+
224
+ get hashCode(): string {
225
+ return hashArray([
226
+ CORE_HASH_STRUCTURE.TRINO_DATASOURCE_SPECIFICATION,
227
+ this.host,
228
+ this.port.toString(),
229
+ this.sslSpecification,
230
+ this.catalog ?? '',
231
+ this.schema ?? '',
232
+ this.clientTags ?? '',
233
+ ]);
234
+ }
235
+ }
@@ -47,6 +47,7 @@ export enum V1_DatabaseType {
47
47
  Presto = 'Presto',
48
48
  Redshift = 'Redshift',
49
49
  Spanner = 'Spanner',
50
+ Trino = 'Trino',
50
51
  }
51
52
 
52
53
  export abstract class V1_DatabaseConnection extends V1_Connection {