@finos/legend-graph 2.0.3 → 2.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 (245) hide show
  1. package/lib/graph/BasicModel.d.ts.map +1 -1
  2. package/lib/graph/BasicModel.js +8 -5
  3. package/lib/graph/BasicModel.js.map +1 -1
  4. package/lib/graphManager/AbstractPureGraphManager.d.ts +7 -2
  5. package/lib/graphManager/AbstractPureGraphManager.d.ts.map +1 -1
  6. package/lib/graphManager/AbstractPureGraphManager.js.map +1 -1
  7. package/lib/index.d.ts +5 -1
  8. package/lib/index.d.ts.map +1 -1
  9. package/lib/index.js +5 -1
  10. package/lib/index.js.map +1 -1
  11. package/lib/models/DomainModifierHelper.d.ts +99 -0
  12. package/lib/models/DomainModifierHelper.d.ts.map +1 -0
  13. package/lib/models/DomainModifierHelper.js +210 -0
  14. package/lib/models/DomainModifierHelper.js.map +1 -0
  15. package/lib/models/ModelGenerationConfiguration.d.ts +21 -0
  16. package/lib/models/ModelGenerationConfiguration.d.ts.map +1 -0
  17. package/lib/models/ModelGenerationConfiguration.js +24 -0
  18. package/lib/models/ModelGenerationConfiguration.js.map +1 -0
  19. package/lib/models/metamodels/pure/Reference.d.ts +0 -1
  20. package/lib/models/metamodels/pure/Reference.d.ts.map +1 -1
  21. package/lib/models/metamodels/pure/Reference.js.map +1 -1
  22. package/lib/models/metamodels/pure/packageableElements/PackageableElement.d.ts +0 -1
  23. package/lib/models/metamodels/pure/packageableElements/PackageableElement.d.ts.map +1 -1
  24. package/lib/models/metamodels/pure/packageableElements/PackageableElement.js +1 -2
  25. package/lib/models/metamodels/pure/packageableElements/PackageableElement.js.map +1 -1
  26. package/lib/models/metamodels/pure/packageableElements/PackageableElementReference.d.ts +0 -1
  27. package/lib/models/metamodels/pure/packageableElements/PackageableElementReference.d.ts.map +1 -1
  28. package/lib/models/metamodels/pure/packageableElements/PackageableElementReference.js +0 -4
  29. package/lib/models/metamodels/pure/packageableElements/PackageableElementReference.js.map +1 -1
  30. package/lib/models/metamodels/pure/packageableElements/connection/Connection.d.ts.map +1 -1
  31. package/lib/models/metamodels/pure/packageableElements/connection/Connection.js +2 -1
  32. package/lib/models/metamodels/pure/packageableElements/connection/Connection.js.map +1 -1
  33. package/lib/models/metamodels/pure/packageableElements/domain/Association.d.ts +0 -6
  34. package/lib/models/metamodels/pure/packageableElements/domain/Association.d.ts.map +1 -1
  35. package/lib/models/metamodels/pure/packageableElements/domain/Association.js +4 -27
  36. package/lib/models/metamodels/pure/packageableElements/domain/Association.js.map +1 -1
  37. package/lib/models/metamodels/pure/packageableElements/domain/Class.d.ts +0 -16
  38. package/lib/models/metamodels/pure/packageableElements/domain/Class.d.ts.map +1 -1
  39. package/lib/models/metamodels/pure/packageableElements/domain/Class.js +2 -66
  40. package/lib/models/metamodels/pure/packageableElements/domain/Class.js.map +1 -1
  41. package/lib/models/metamodels/pure/packageableElements/domain/ConcreteFunctionDefinition.d.ts +0 -9
  42. package/lib/models/metamodels/pure/packageableElements/domain/ConcreteFunctionDefinition.d.ts.map +1 -1
  43. package/lib/models/metamodels/pure/packageableElements/domain/ConcreteFunctionDefinition.js +2 -38
  44. package/lib/models/metamodels/pure/packageableElements/domain/ConcreteFunctionDefinition.js.map +1 -1
  45. package/lib/models/metamodels/pure/packageableElements/domain/Constraint.d.ts +0 -2
  46. package/lib/models/metamodels/pure/packageableElements/domain/Constraint.d.ts.map +1 -1
  47. package/lib/models/metamodels/pure/packageableElements/domain/Constraint.js +1 -9
  48. package/lib/models/metamodels/pure/packageableElements/domain/Constraint.js.map +1 -1
  49. package/lib/models/metamodels/pure/packageableElements/domain/DerivedProperty.d.ts +0 -11
  50. package/lib/models/metamodels/pure/packageableElements/domain/DerivedProperty.d.ts.map +1 -1
  51. package/lib/models/metamodels/pure/packageableElements/domain/DerivedProperty.js +2 -42
  52. package/lib/models/metamodels/pure/packageableElements/domain/DerivedProperty.js.map +1 -1
  53. package/lib/models/metamodels/pure/packageableElements/domain/Enum.d.ts +0 -6
  54. package/lib/models/metamodels/pure/packageableElements/domain/Enum.d.ts.map +1 -1
  55. package/lib/models/metamodels/pure/packageableElements/domain/Enum.js +2 -26
  56. package/lib/models/metamodels/pure/packageableElements/domain/Enum.js.map +1 -1
  57. package/lib/models/metamodels/pure/packageableElements/domain/EnumValueReference.d.ts +0 -1
  58. package/lib/models/metamodels/pure/packageableElements/domain/EnumValueReference.d.ts.map +1 -1
  59. package/lib/models/metamodels/pure/packageableElements/domain/EnumValueReference.js +1 -6
  60. package/lib/models/metamodels/pure/packageableElements/domain/EnumValueReference.js.map +1 -1
  61. package/lib/models/metamodels/pure/packageableElements/domain/Enumeration.d.ts +0 -7
  62. package/lib/models/metamodels/pure/packageableElements/domain/Enumeration.d.ts.map +1 -1
  63. package/lib/models/metamodels/pure/packageableElements/domain/Enumeration.js +2 -30
  64. package/lib/models/metamodels/pure/packageableElements/domain/Enumeration.js.map +1 -1
  65. package/lib/models/metamodels/pure/packageableElements/domain/GenericType.d.ts +0 -1
  66. package/lib/models/metamodels/pure/packageableElements/domain/GenericType.d.ts.map +1 -1
  67. package/lib/models/metamodels/pure/packageableElements/domain/GenericType.js +1 -5
  68. package/lib/models/metamodels/pure/packageableElements/domain/GenericType.js.map +1 -1
  69. package/lib/models/metamodels/pure/packageableElements/domain/GenericTypeReference.d.ts +0 -1
  70. package/lib/models/metamodels/pure/packageableElements/domain/GenericTypeReference.d.ts.map +1 -1
  71. package/lib/models/metamodels/pure/packageableElements/domain/GenericTypeReference.js +1 -6
  72. package/lib/models/metamodels/pure/packageableElements/domain/GenericTypeReference.js.map +1 -1
  73. package/lib/models/metamodels/pure/packageableElements/domain/Measure.d.ts +0 -2
  74. package/lib/models/metamodels/pure/packageableElements/domain/Measure.d.ts.map +1 -1
  75. package/lib/models/metamodels/pure/packageableElements/domain/Measure.js +1 -9
  76. package/lib/models/metamodels/pure/packageableElements/domain/Measure.js.map +1 -1
  77. package/lib/models/metamodels/pure/packageableElements/domain/Multiplicity.d.ts +0 -2
  78. package/lib/models/metamodels/pure/packageableElements/domain/Multiplicity.d.ts.map +1 -1
  79. package/lib/models/metamodels/pure/packageableElements/domain/Multiplicity.js +1 -9
  80. package/lib/models/metamodels/pure/packageableElements/domain/Multiplicity.js.map +1 -1
  81. package/lib/models/metamodels/pure/packageableElements/domain/Package.d.ts +0 -3
  82. package/lib/models/metamodels/pure/packageableElements/domain/Package.d.ts.map +1 -1
  83. package/lib/models/metamodels/pure/packageableElements/domain/Package.js +3 -16
  84. package/lib/models/metamodels/pure/packageableElements/domain/Package.js.map +1 -1
  85. package/lib/models/metamodels/pure/packageableElements/domain/Profile.d.ts +0 -4
  86. package/lib/models/metamodels/pure/packageableElements/domain/Profile.d.ts.map +1 -1
  87. package/lib/models/metamodels/pure/packageableElements/domain/Profile.js +2 -18
  88. package/lib/models/metamodels/pure/packageableElements/domain/Profile.js.map +1 -1
  89. package/lib/models/metamodels/pure/packageableElements/domain/Property.d.ts +0 -9
  90. package/lib/models/metamodels/pure/packageableElements/domain/Property.d.ts.map +1 -1
  91. package/lib/models/metamodels/pure/packageableElements/domain/Property.js +2 -34
  92. package/lib/models/metamodels/pure/packageableElements/domain/Property.js.map +1 -1
  93. package/lib/models/metamodels/pure/packageableElements/domain/PropertyReference.d.ts +0 -1
  94. package/lib/models/metamodels/pure/packageableElements/domain/PropertyReference.d.ts.map +1 -1
  95. package/lib/models/metamodels/pure/packageableElements/domain/PropertyReference.js +1 -8
  96. package/lib/models/metamodels/pure/packageableElements/domain/PropertyReference.js.map +1 -1
  97. package/lib/models/metamodels/pure/packageableElements/domain/Stereotype.d.ts +0 -1
  98. package/lib/models/metamodels/pure/packageableElements/domain/Stereotype.d.ts.map +1 -1
  99. package/lib/models/metamodels/pure/packageableElements/domain/Stereotype.js +1 -5
  100. package/lib/models/metamodels/pure/packageableElements/domain/Stereotype.js.map +1 -1
  101. package/lib/models/metamodels/pure/packageableElements/domain/StereotypeReference.d.ts +0 -1
  102. package/lib/models/metamodels/pure/packageableElements/domain/StereotypeReference.d.ts.map +1 -1
  103. package/lib/models/metamodels/pure/packageableElements/domain/StereotypeReference.js +1 -6
  104. package/lib/models/metamodels/pure/packageableElements/domain/StereotypeReference.js.map +1 -1
  105. package/lib/models/metamodels/pure/packageableElements/domain/Tag.d.ts +0 -1
  106. package/lib/models/metamodels/pure/packageableElements/domain/Tag.d.ts.map +1 -1
  107. package/lib/models/metamodels/pure/packageableElements/domain/Tag.js +1 -5
  108. package/lib/models/metamodels/pure/packageableElements/domain/Tag.js.map +1 -1
  109. package/lib/models/metamodels/pure/packageableElements/domain/TagReference.d.ts +0 -1
  110. package/lib/models/metamodels/pure/packageableElements/domain/TagReference.d.ts.map +1 -1
  111. package/lib/models/metamodels/pure/packageableElements/domain/TagReference.js +1 -6
  112. package/lib/models/metamodels/pure/packageableElements/domain/TagReference.js.map +1 -1
  113. package/lib/models/metamodels/pure/packageableElements/domain/TaggedValue.d.ts +0 -2
  114. package/lib/models/metamodels/pure/packageableElements/domain/TaggedValue.d.ts.map +1 -1
  115. package/lib/models/metamodels/pure/packageableElements/domain/TaggedValue.js +1 -9
  116. package/lib/models/metamodels/pure/packageableElements/domain/TaggedValue.js.map +1 -1
  117. package/lib/models/metamodels/pure/packageableElements/mapping/SetImplementationReference.d.ts.map +1 -1
  118. package/lib/models/metamodels/pure/packageableElements/mapping/SetImplementationReference.js +2 -1
  119. package/lib/models/metamodels/pure/packageableElements/mapping/SetImplementationReference.js.map +1 -1
  120. package/lib/models/metamodels/pure/packageableElements/runtime/Runtime.d.ts.map +1 -1
  121. package/lib/models/metamodels/pure/packageableElements/runtime/Runtime.js +2 -1
  122. package/lib/models/metamodels/pure/packageableElements/runtime/Runtime.js.map +1 -1
  123. package/lib/models/metamodels/pure/packageableElements/service/ServiceExecution.d.ts.map +1 -1
  124. package/lib/models/metamodels/pure/packageableElements/service/ServiceExecution.js +3 -2
  125. package/lib/models/metamodels/pure/packageableElements/service/ServiceExecution.js.map +1 -1
  126. package/lib/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataSectionReference.d.ts.map +1 -1
  127. package/lib/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataSectionReference.js +2 -1
  128. package/lib/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataSectionReference.js.map +1 -1
  129. package/lib/models/metamodels/pure/packageableElements/store/flatData/model/RootFlatDataRecordTypeReference.d.ts.map +1 -1
  130. package/lib/models/metamodels/pure/packageableElements/store/flatData/model/RootFlatDataRecordTypeReference.js +2 -1
  131. package/lib/models/metamodels/pure/packageableElements/store/flatData/model/RootFlatDataRecordTypeReference.js.map +1 -1
  132. package/lib/models/metamodels/pure/packageableElements/store/modelToModel/connection/JsonModelConnection.d.ts.map +1 -1
  133. package/lib/models/metamodels/pure/packageableElements/store/modelToModel/connection/JsonModelConnection.js +2 -1
  134. package/lib/models/metamodels/pure/packageableElements/store/modelToModel/connection/JsonModelConnection.js.map +1 -1
  135. package/lib/models/metamodels/pure/packageableElements/store/modelToModel/connection/XmlModelConnection.d.ts.map +1 -1
  136. package/lib/models/metamodels/pure/packageableElements/store/modelToModel/connection/XmlModelConnection.js +2 -1
  137. package/lib/models/metamodels/pure/packageableElements/store/modelToModel/connection/XmlModelConnection.js.map +1 -1
  138. package/lib/models/metamodels/pure/packageableElements/store/relational/model/ColumnReference.d.ts.map +1 -1
  139. package/lib/models/metamodels/pure/packageableElements/store/relational/model/ColumnReference.js +2 -1
  140. package/lib/models/metamodels/pure/packageableElements/store/relational/model/ColumnReference.js.map +1 -1
  141. package/lib/models/metamodels/pure/packageableElements/store/relational/model/FilterReference.d.ts.map +1 -1
  142. package/lib/models/metamodels/pure/packageableElements/store/relational/model/FilterReference.js +2 -1
  143. package/lib/models/metamodels/pure/packageableElements/store/relational/model/FilterReference.js.map +1 -1
  144. package/lib/models/metamodels/pure/packageableElements/store/relational/model/JoinReference.d.ts.map +1 -1
  145. package/lib/models/metamodels/pure/packageableElements/store/relational/model/JoinReference.js +2 -1
  146. package/lib/models/metamodels/pure/packageableElements/store/relational/model/JoinReference.js.map +1 -1
  147. package/lib/models/metamodels/pure/packageableElements/store/relational/model/TableReference.d.ts.map +1 -1
  148. package/lib/models/metamodels/pure/packageableElements/store/relational/model/TableReference.js +2 -1
  149. package/lib/models/metamodels/pure/packageableElements/store/relational/model/TableReference.js.map +1 -1
  150. package/lib/models/metamodels/pure/packageableElements/store/relational/model/ViewReference.d.ts.map +1 -1
  151. package/lib/models/metamodels/pure/packageableElements/store/relational/model/ViewReference.js +2 -1
  152. package/lib/models/metamodels/pure/packageableElements/store/relational/model/ViewReference.js.map +1 -1
  153. package/lib/models/metamodels/pure/rawValueSpecification/RawVariableExpression.d.ts.map +1 -1
  154. package/lib/models/metamodels/pure/rawValueSpecification/RawVariableExpression.js +2 -1
  155. package/lib/models/metamodels/pure/rawValueSpecification/RawVariableExpression.js.map +1 -1
  156. package/lib/models/protocols/pure/DSLExternalFormat_PureProtocolProcessorPlugin.d.ts.map +1 -1
  157. package/lib/models/protocols/pure/DSLExternalFormat_PureProtocolProcessorPlugin.js +2 -3
  158. package/lib/models/protocols/pure/DSLExternalFormat_PureProtocolProcessorPlugin.js.map +1 -1
  159. package/lib/models/protocols/pure/MappingGeneration_PureProtocolProcessorPlugin_Extension.d.ts +27 -0
  160. package/lib/models/protocols/pure/MappingGeneration_PureProtocolProcessorPlugin_Extension.d.ts.map +1 -0
  161. package/lib/models/protocols/pure/MappingGeneration_PureProtocolProcessorPlugin_Extension.js +17 -0
  162. package/lib/models/protocols/pure/MappingGeneration_PureProtocolProcessorPlugin_Extension.js.map +1 -0
  163. package/lib/models/protocols/pure/v1/V1_PureGraphManager.d.ts +6 -1
  164. package/lib/models/protocols/pure/v1/V1_PureGraphManager.d.ts.map +1 -1
  165. package/lib/models/protocols/pure/v1/V1_PureGraphManager.js +29 -12
  166. package/lib/models/protocols/pure/v1/V1_PureGraphManager.js.map +1 -1
  167. package/lib/models/protocols/pure/v1/engine/V1_Engine.d.ts +4 -0
  168. package/lib/models/protocols/pure/v1/engine/V1_Engine.d.ts.map +1 -1
  169. package/lib/models/protocols/pure/v1/engine/V1_Engine.js +3 -0
  170. package/lib/models/protocols/pure/v1/engine/V1_Engine.js.map +1 -1
  171. package/lib/models/protocols/pure/v1/engine/V1_EngineServerClient.d.ts +4 -0
  172. package/lib/models/protocols/pure/v1/engine/V1_EngineServerClient.d.ts.map +1 -1
  173. package/lib/models/protocols/pure/v1/engine/V1_EngineServerClient.js +1 -0
  174. package/lib/models/protocols/pure/v1/engine/V1_EngineServerClient.js.map +1 -1
  175. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ElementBuilder.d.ts.map +1 -1
  176. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ElementBuilder.js +2 -3
  177. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ElementBuilder.js.map +1 -1
  178. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelGraphFirstPassBuilder.d.ts.map +1 -1
  179. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelGraphFirstPassBuilder.js +15 -42
  180. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelGraphFirstPassBuilder.js.map +1 -1
  181. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelGraphSecondPassBuilder.d.ts.map +1 -1
  182. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelGraphSecondPassBuilder.js +2 -1
  183. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelGraphSecondPassBuilder.js.map +1 -1
  184. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelGraphThirdPassBuilder.d.ts.map +1 -1
  185. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelGraphThirdPassBuilder.js +5 -4
  186. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelGraphThirdPassBuilder.js.map +1 -1
  187. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_DomainBuilderHelper.d.ts.map +1 -1
  188. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_DomainBuilderHelper.js +2 -1
  189. package/lib/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_DomainBuilderHelper.js.map +1 -1
  190. package/lib/package.json +2 -2
  191. package/package.json +5 -5
  192. package/src/graph/BasicModel.ts +11 -5
  193. package/src/graphManager/AbstractPureGraphManager.ts +17 -6
  194. package/src/index.ts +8 -1
  195. package/src/models/DomainModifierHelper.ts +373 -0
  196. package/src/models/ModelGenerationConfiguration.ts +25 -0
  197. package/src/models/metamodels/pure/Reference.ts +0 -2
  198. package/src/models/metamodels/pure/packageableElements/PackageableElement.ts +3 -2
  199. package/src/models/metamodels/pure/packageableElements/PackageableElementReference.ts +0 -5
  200. package/src/models/metamodels/pure/packageableElements/connection/Connection.ts +2 -1
  201. package/src/models/metamodels/pure/packageableElements/domain/Association.ts +3 -31
  202. package/src/models/metamodels/pure/packageableElements/domain/Class.ts +1 -72
  203. package/src/models/metamodels/pure/packageableElements/domain/ConcreteFunctionDefinition.ts +2 -48
  204. package/src/models/metamodels/pure/packageableElements/domain/Constraint.ts +1 -10
  205. package/src/models/metamodels/pure/packageableElements/domain/DerivedProperty.ts +2 -54
  206. package/src/models/metamodels/pure/packageableElements/domain/Enum.ts +2 -37
  207. package/src/models/metamodels/pure/packageableElements/domain/EnumValueReference.ts +1 -7
  208. package/src/models/metamodels/pure/packageableElements/domain/Enumeration.ts +1 -37
  209. package/src/models/metamodels/pure/packageableElements/domain/GenericType.ts +1 -5
  210. package/src/models/metamodels/pure/packageableElements/domain/GenericTypeReference.ts +1 -7
  211. package/src/models/metamodels/pure/packageableElements/domain/Measure.ts +1 -11
  212. package/src/models/metamodels/pure/packageableElements/domain/Multiplicity.ts +1 -11
  213. package/src/models/metamodels/pure/packageableElements/domain/Package.ts +3 -21
  214. package/src/models/metamodels/pure/packageableElements/domain/Profile.ts +1 -23
  215. package/src/models/metamodels/pure/packageableElements/domain/Property.ts +2 -45
  216. package/src/models/metamodels/pure/packageableElements/domain/PropertyReference.ts +1 -11
  217. package/src/models/metamodels/pure/packageableElements/domain/Stereotype.ts +1 -6
  218. package/src/models/metamodels/pure/packageableElements/domain/StereotypeReference.ts +1 -7
  219. package/src/models/metamodels/pure/packageableElements/domain/Tag.ts +1 -6
  220. package/src/models/metamodels/pure/packageableElements/domain/TagReference.ts +1 -7
  221. package/src/models/metamodels/pure/packageableElements/domain/TaggedValue.ts +1 -10
  222. package/src/models/metamodels/pure/packageableElements/mapping/SetImplementationReference.ts +2 -1
  223. package/src/models/metamodels/pure/packageableElements/runtime/Runtime.ts +2 -1
  224. package/src/models/metamodels/pure/packageableElements/service/ServiceExecution.ts +3 -2
  225. package/src/models/metamodels/pure/packageableElements/store/flatData/model/FlatDataSectionReference.ts +2 -1
  226. package/src/models/metamodels/pure/packageableElements/store/flatData/model/RootFlatDataRecordTypeReference.ts +2 -1
  227. package/src/models/metamodels/pure/packageableElements/store/modelToModel/connection/JsonModelConnection.ts +2 -1
  228. package/src/models/metamodels/pure/packageableElements/store/modelToModel/connection/XmlModelConnection.ts +2 -1
  229. package/src/models/metamodels/pure/packageableElements/store/relational/model/ColumnReference.ts +5 -1
  230. package/src/models/metamodels/pure/packageableElements/store/relational/model/FilterReference.ts +2 -1
  231. package/src/models/metamodels/pure/packageableElements/store/relational/model/JoinReference.ts +2 -1
  232. package/src/models/metamodels/pure/packageableElements/store/relational/model/TableReference.ts +5 -1
  233. package/src/models/metamodels/pure/packageableElements/store/relational/model/ViewReference.ts +5 -1
  234. package/src/models/metamodels/pure/rawValueSpecification/RawVariableExpression.ts +2 -1
  235. package/src/models/protocols/pure/DSLExternalFormat_PureProtocolProcessorPlugin.ts +5 -3
  236. package/src/models/protocols/pure/MappingGeneration_PureProtocolProcessorPlugin_Extension.ts +34 -0
  237. package/src/models/protocols/pure/v1/V1_PureGraphManager.ts +54 -24
  238. package/src/models/protocols/pure/v1/engine/V1_Engine.ts +8 -0
  239. package/src/models/protocols/pure/v1/engine/V1_EngineServerClient.ts +15 -0
  240. package/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ElementBuilder.ts +5 -3
  241. package/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelGraphFirstPassBuilder.ts +57 -42
  242. package/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelGraphSecondPassBuilder.ts +3 -1
  243. package/src/models/protocols/pure/v1/transformation/pureGraph/to/V1_ProtocolToMetaModelGraphThirdPassBuilder.ts +8 -4
  244. package/src/models/protocols/pure/v1/transformation/pureGraph/to/helpers/V1_DomainBuilderHelper.ts +2 -1
  245. package/tsconfig.json +3 -0
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { observable, action, computed, makeObservable } from 'mobx';
17
+ import { observable, computed, makeObservable } from 'mobx';
18
18
  import { uuid } from '@finos/legend-shared';
19
19
  import type { Profile } from './Profile';
20
20
  import type { Stubable } from '../../../../../helpers/Stubable';
@@ -27,7 +27,6 @@ export class Stereotype implements Stubable {
27
27
  constructor(owner: Profile, value: string) {
28
28
  makeObservable(this, {
29
29
  value: observable,
30
- setValue: action,
31
30
  isStub: computed,
32
31
  });
33
32
 
@@ -35,10 +34,6 @@ export class Stereotype implements Stubable {
35
34
  this.value = value;
36
35
  }
37
36
 
38
- setValue(value: string): void {
39
- this.value = value;
40
- }
41
-
42
37
  static createStub = (profile: Profile): Stereotype =>
43
38
  new Stereotype(profile, '');
44
39
  get isStub(): boolean {
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { observable, action, computed, makeObservable } from 'mobx';
17
+ import { observable, computed, makeObservable } from 'mobx';
18
18
  import { CORE_HASH_STRUCTURE } from '../../../../../MetaModelConst';
19
19
  import { hashString } from '@finos/legend-shared';
20
20
  import {
@@ -42,7 +42,6 @@ export abstract class StereotypeReference
42
42
 
43
43
  makeObservable(this, {
44
44
  value: observable,
45
- setValue: action,
46
45
  isStub: computed,
47
46
  pointerHashCode: computed,
48
47
  });
@@ -51,11 +50,6 @@ export abstract class StereotypeReference
51
50
  this.value = value;
52
51
  }
53
52
 
54
- setValue(value: Stereotype): void {
55
- this.value = value;
56
- this.ownerReference.setValue(value.owner);
57
- }
58
-
59
53
  get isStub(): boolean {
60
54
  return !this.value.isStub;
61
55
  }
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { observable, action, computed, makeObservable } from 'mobx';
17
+ import { observable, computed, makeObservable } from 'mobx';
18
18
  import { uuid } from '@finos/legend-shared';
19
19
  import type { Profile } from './Profile';
20
20
  import type { Stubable } from '../../../../../helpers/Stubable';
@@ -27,7 +27,6 @@ export class Tag implements Stubable {
27
27
  constructor(owner: Profile, value: string) {
28
28
  makeObservable(this, {
29
29
  value: observable,
30
- setValue: action,
31
30
  isStub: computed,
32
31
  });
33
32
 
@@ -35,10 +34,6 @@ export class Tag implements Stubable {
35
34
  this.value = value;
36
35
  }
37
36
 
38
- setValue(value: string): void {
39
- this.value = value;
40
- }
41
-
42
37
  static createStub = (profile: Profile): Tag => new Tag(profile, '');
43
38
  get isStub(): boolean {
44
39
  return !this.value;
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { observable, action, computed, makeObservable } from 'mobx';
17
+ import { observable, computed, makeObservable } from 'mobx';
18
18
  import { CORE_HASH_STRUCTURE } from '../../../../../MetaModelConst';
19
19
  import { hashString } from '@finos/legend-shared';
20
20
  import {
@@ -42,7 +42,6 @@ export abstract class TagReference
42
42
 
43
43
  makeObservable(this, {
44
44
  value: observable,
45
- setValue: action,
46
45
  isStub: computed,
47
46
  pointerHashCode: computed,
48
47
  });
@@ -51,11 +50,6 @@ export abstract class TagReference
51
50
  this.value = value;
52
51
  }
53
52
 
54
- setValue(value: Tag): void {
55
- this.value = value;
56
- this.ownerReference.setValue(value.owner);
57
- }
58
-
59
53
  get isStub(): boolean {
60
54
  return !this.value.isStub;
61
55
  }
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { observable, action, computed, makeObservable } from 'mobx';
17
+ import { observable, computed, makeObservable } from 'mobx';
18
18
  import { hashArray, uuid, type Hashable } from '@finos/legend-shared';
19
19
  import { CORE_HASH_STRUCTURE } from '../../../../../MetaModelConst';
20
20
  import type { Tag } from './Tag';
@@ -29,8 +29,6 @@ export class TaggedValue implements Hashable, Stubable {
29
29
  constructor(tag: TagReference, value: string) {
30
30
  makeObservable(this, {
31
31
  value: observable,
32
- setTag: action,
33
- setValue: action,
34
32
  isStub: computed,
35
33
  hashCode: computed,
36
34
  });
@@ -39,13 +37,6 @@ export class TaggedValue implements Hashable, Stubable {
39
37
  this.value = value;
40
38
  }
41
39
 
42
- setTag(tag: Tag): void {
43
- this.tag.setValue(tag);
44
- }
45
- setValue(value: string): void {
46
- this.value = value;
47
- }
48
-
49
40
  static createStub = (tag: Tag): TaggedValue =>
50
41
  new TaggedValue(TagExplicitReference.create(tag), '');
51
42
  get isStub(): boolean {
@@ -23,6 +23,7 @@ import {
23
23
  import type { Mapping } from './Mapping';
24
24
  import type { SetImplementation } from './SetImplementation';
25
25
  import { ReferenceWithOwner } from '../../Reference';
26
+ import { setPackageableElementReferenceValue } from '../../../../DomainModifierHelper';
26
27
 
27
28
  export abstract class SetImplementationReference extends ReferenceWithOwner {
28
29
  override readonly ownerReference: PackageableElementReference<Mapping>;
@@ -45,7 +46,7 @@ export abstract class SetImplementationReference extends ReferenceWithOwner {
45
46
 
46
47
  setValue(value: SetImplementation): void {
47
48
  this.value = value;
48
- this.ownerReference.setValue(value.parent);
49
+ setPackageableElementReferenceValue(this.ownerReference, value.parent);
49
50
  }
50
51
  }
51
52
 
@@ -37,6 +37,7 @@ import {
37
37
  getElementPointerHashCode,
38
38
  PACKAGEABLE_ELEMENT_POINTER_TYPE,
39
39
  } from '../PackageableElement';
40
+ import { setPackageableElementReferenceValue } from '../../../../DomainModifierHelper';
40
41
 
41
42
  export class IdentifiedConnection implements Hashable {
42
43
  uuid = uuid();
@@ -213,7 +214,7 @@ export class RuntimePointer extends Runtime implements Hashable {
213
214
  }
214
215
 
215
216
  setPackageableRuntime(value: PackageableRuntime): void {
216
- this.packageableRuntime.setValue(value);
217
+ setPackageableElementReferenceValue(this.packageableRuntime, value);
217
218
  }
218
219
 
219
220
  get hashCode(): string {
@@ -31,6 +31,7 @@ import {
31
31
  createValidationError,
32
32
  } from '../../../../../helpers/ValidationHelper';
33
33
  import type { PackageableElementReference } from '../PackageableElementReference';
34
+ import { setPackageableElementReferenceValue } from '../../../../DomainModifierHelper';
34
35
 
35
36
  export abstract class ServiceExecution implements Hashable {
36
37
  private readonly _$nominalTypeBrand!: 'ServiceExecution';
@@ -102,7 +103,7 @@ export class PureSingleExecution extends PureExecution implements Hashable {
102
103
  }
103
104
 
104
105
  setMapping(value: Mapping): void {
105
- this.mapping.setValue(value);
106
+ setPackageableElementReferenceValue(this.mapping, value);
106
107
  }
107
108
  setRuntime(value: Runtime): void {
108
109
  this.runtime = value;
@@ -160,7 +161,7 @@ export class KeyedExecutionParameter implements Hashable {
160
161
  this.key = value;
161
162
  }
162
163
  setMapping(value: Mapping): void {
163
- this.mapping.setValue(value);
164
+ setPackageableElementReferenceValue(this.mapping, value);
164
165
  }
165
166
  setRuntime(value: Runtime): void {
166
167
  this.runtime = value;
@@ -25,6 +25,7 @@ import {
25
25
  import { ReferenceWithOwner } from '../../../../Reference';
26
26
  import type { FlatData } from './FlatData';
27
27
  import type { FlatDataSection } from './FlatDataSection';
28
+ import { setPackageableElementReferenceValue } from '../../../../../../DomainModifierHelper';
28
29
 
29
30
  export abstract class FlatDataSectionReference extends ReferenceWithOwner {
30
31
  override readonly ownerReference: PackageableElementReference<FlatData>;
@@ -48,7 +49,7 @@ export abstract class FlatDataSectionReference extends ReferenceWithOwner {
48
49
 
49
50
  setValue(value: FlatDataSection): void {
50
51
  this.value = value;
51
- this.ownerReference.setValue(value.owner);
52
+ setPackageableElementReferenceValue(this.ownerReference, value.owner);
52
53
  }
53
54
 
54
55
  get pointerHashCode(): string {
@@ -23,6 +23,7 @@ import {
23
23
  import { ReferenceWithOwner } from '../../../../Reference';
24
24
  import type { RootFlatDataRecordType } from './FlatDataDataType';
25
25
  import type { FlatData } from './FlatData';
26
+ import { setPackageableElementReferenceValue } from '../../../../../../DomainModifierHelper';
26
27
 
27
28
  export abstract class RootFlatDataRecordTypeReference extends ReferenceWithOwner {
28
29
  override readonly ownerReference: PackageableElementReference<FlatData>;
@@ -45,7 +46,7 @@ export abstract class RootFlatDataRecordTypeReference extends ReferenceWithOwner
45
46
 
46
47
  setValue(value: RootFlatDataRecordType): void {
47
48
  this.value = value;
48
- this.ownerReference.setValue(value.owner.owner);
49
+ setPackageableElementReferenceValue(this.ownerReference, value.owner.owner);
49
50
  }
50
51
  }
51
52
 
@@ -27,6 +27,7 @@ import type { Class } from '../../../domain/Class';
27
27
  import type { ModelStore } from '../model/ModelStore';
28
28
  import { PureModelConnection } from './PureModelConnection';
29
29
  import type { PackageableElementReference } from '../../../PackageableElementReference';
30
+ import { setPackageableElementReferenceValue } from '../../../../../../DomainModifierHelper';
30
31
 
31
32
  export class JsonModelConnection
32
33
  extends PureModelConnection
@@ -60,7 +61,7 @@ export class JsonModelConnection
60
61
  }
61
62
 
62
63
  setClass(value: Class): void {
63
- this.class.setValue(value);
64
+ setPackageableElementReferenceValue(this.class, value);
64
65
  }
65
66
  setUrl(value: string): void {
66
67
  this.url = value;
@@ -22,6 +22,7 @@ import type { Class } from '../../../domain/Class';
22
22
  import type { ModelStore } from '../model/ModelStore';
23
23
  import { PureModelConnection } from './PureModelConnection';
24
24
  import type { PackageableElementReference } from '../../../PackageableElementReference';
25
+ import { setPackageableElementReferenceValue } from '../../../../../../DomainModifierHelper';
25
26
 
26
27
  export class XmlModelConnection
27
28
  extends PureModelConnection
@@ -51,7 +52,7 @@ export class XmlModelConnection
51
52
  }
52
53
 
53
54
  setClass(value: Class): void {
54
- this.class.setValue(value);
55
+ setPackageableElementReferenceValue(this.class, value);
55
56
  }
56
57
  setUrl(value: string): void {
57
58
  this.url = value;
@@ -24,6 +24,7 @@ import { ReferenceWithOwner } from '../../../../Reference';
24
24
  import type { Database } from './Database';
25
25
  import type { Column } from './Column';
26
26
  import { getSchemaFromRelation } from './RelationReference';
27
+ import { setPackageableElementReferenceValue } from '../../../../../../DomainModifierHelper';
27
28
 
28
29
  export abstract class ColumnReference extends ReferenceWithOwner {
29
30
  override readonly ownerReference: PackageableElementReference<Database>;
@@ -46,7 +47,10 @@ export abstract class ColumnReference extends ReferenceWithOwner {
46
47
 
47
48
  setValue(value: Column): void {
48
49
  this.value = value;
49
- this.ownerReference.setValue(getSchemaFromRelation(value.owner).owner);
50
+ setPackageableElementReferenceValue(
51
+ this.ownerReference,
52
+ getSchemaFromRelation(value.owner).owner,
53
+ );
50
54
  }
51
55
  }
52
56
 
@@ -23,6 +23,7 @@ import {
23
23
  import { ReferenceWithOwner } from '../../../../Reference';
24
24
  import type { Database } from './Database';
25
25
  import type { Filter } from './Filter';
26
+ import { setPackageableElementReferenceValue } from '../../../../../../DomainModifierHelper';
26
27
 
27
28
  export abstract class FilterReference extends ReferenceWithOwner {
28
29
  override readonly ownerReference: PackageableElementReference<Database>;
@@ -45,7 +46,7 @@ export abstract class FilterReference extends ReferenceWithOwner {
45
46
 
46
47
  setValue(value: Filter): void {
47
48
  this.value = value;
48
- this.ownerReference.setValue(value.owner);
49
+ setPackageableElementReferenceValue(this.ownerReference, value.owner);
49
50
  }
50
51
  }
51
52
 
@@ -23,6 +23,7 @@ import {
23
23
  import { ReferenceWithOwner } from '../../../../Reference';
24
24
  import type { Database } from './Database';
25
25
  import type { Join } from './Join';
26
+ import { setPackageableElementReferenceValue } from '../../../../../../DomainModifierHelper';
26
27
 
27
28
  export abstract class JoinReference extends ReferenceWithOwner {
28
29
  override readonly ownerReference: PackageableElementReference<Database>;
@@ -45,7 +46,7 @@ export abstract class JoinReference extends ReferenceWithOwner {
45
46
 
46
47
  setValue(value: Join): void {
47
48
  this.value = value;
48
- this.ownerReference.setValue(value.owner);
49
+ setPackageableElementReferenceValue(this.ownerReference, value.owner);
49
50
  }
50
51
  }
51
52
 
@@ -26,6 +26,7 @@ import { ReferenceWithOwner } from '../../../../Reference';
26
26
  import type { Database } from './Database';
27
27
  import type { Table } from './Table';
28
28
  import { SELF_JOIN_SCHEMA_NAME, SELF_JOIN_TABLE_NAME } from './Join';
29
+ import { setPackageableElementReferenceValue } from '../../../../../../DomainModifierHelper';
29
30
 
30
31
  export abstract class NamedRelationalReference extends ReferenceWithOwner {
31
32
  override readonly ownerReference: PackageableElementReference<Database>;
@@ -57,7 +58,10 @@ export abstract class TableReference extends NamedRelationalReference {
57
58
 
58
59
  setValue(value: Table): void {
59
60
  this.value = value;
60
- this.ownerReference.setValue(value.schema.owner);
61
+ setPackageableElementReferenceValue(
62
+ this.ownerReference,
63
+ value.schema.owner,
64
+ );
61
65
  }
62
66
 
63
67
  get pointerHashCode(): string {
@@ -26,6 +26,7 @@ import type { Database } from './Database';
26
26
  import type { View } from './View';
27
27
  import { NamedRelationalReference } from './TableReference';
28
28
  import { SELF_JOIN_SCHEMA_NAME, SELF_JOIN_TABLE_NAME } from './Join';
29
+ import { setPackageableElementReferenceValue } from '../../../../../../DomainModifierHelper';
29
30
 
30
31
  export abstract class ViewReference extends NamedRelationalReference {
31
32
  value: View;
@@ -48,7 +49,10 @@ export abstract class ViewReference extends NamedRelationalReference {
48
49
 
49
50
  setValue(value: View): void {
50
51
  this.value = value;
51
- this.ownerReference.setValue(value.schema.owner);
52
+ setPackageableElementReferenceValue(
53
+ this.ownerReference,
54
+ value.schema.owner,
55
+ );
52
56
  }
53
57
 
54
58
  get pointerHashCode(): string {
@@ -28,6 +28,7 @@ import {
28
28
  type RawValueSpecificationVisitor,
29
29
  RawValueSpecification,
30
30
  } from './RawValueSpecification';
31
+ import { setPackageableElementReferenceValue } from '../../../DomainModifierHelper';
31
32
 
32
33
  export class RawVariableExpression
33
34
  extends RawValueSpecification
@@ -64,7 +65,7 @@ export class RawVariableExpression
64
65
  this.name = value;
65
66
  }
66
67
  setType(value: Type): void {
67
- this.type.setValue(value);
68
+ setPackageableElementReferenceValue(this.type, value);
68
69
  }
69
70
  setMultiplicity(value: Multiplicity): void {
70
71
  this.multiplicity = value;
@@ -86,6 +86,7 @@ import {
86
86
  V1_schemaSetModelSchema,
87
87
  V1_SCHEMA_SET_ELEMENT_PROTOCOL_TYPE,
88
88
  } from './v1/transformation/pureProtocol/serializationHelpers/V1_DSLExternalFormat_ProtocolHelper';
89
+ import { addPackageElement } from '../../DomainModifierHelper';
89
90
 
90
91
  const BINDING_ELEMENT_CLASSIFIER_PATH =
91
92
  'meta::external::shared::format::binding::Binding';
@@ -118,9 +119,10 @@ export class DSLExternalFormat_PureProtocolProcessorPlugin
118
119
  elementProtocol.package,
119
120
  elementProtocol.name,
120
121
  );
121
- context.currentSubGraph
122
- .getOrCreatePackage(elementProtocol.package)
123
- .addElement(element);
122
+ addPackageElement(
123
+ context.currentSubGraph.getOrCreatePackage(elementProtocol.package),
124
+ element,
125
+ );
124
126
  context.currentSubGraph.setOwnStore(path, element);
125
127
  return element;
126
128
  },
@@ -0,0 +1,34 @@
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 { ModelGenerationConfiguration } from '../../ModelGenerationConfiguration';
18
+ import type { V1_PureModelContextData } from './v1/model/context/V1_PureModelContextData';
19
+ import type { V1_Engine } from './v1/engine/V1_Engine';
20
+ import type { PureProtocolProcessorPlugin } from './PureProtocolProcessorPlugin';
21
+
22
+ export type V1_ModelGeneratorFromConfiguration = (
23
+ config: ModelGenerationConfiguration,
24
+ model: V1_PureModelContextData,
25
+ engine: V1_Engine,
26
+ ) => Promise<V1_PureModelContextData | undefined>;
27
+
28
+ export interface MappingGeneration_PureProtocolProcessorPlugin_Extension
29
+ extends PureProtocolProcessorPlugin {
30
+ /**
31
+ * Get generators for model generation from configuration.
32
+ */
33
+ V1_getExtraModelGeneratorsFromConfiguration?(): V1_ModelGeneratorFromConfiguration[];
34
+ }
@@ -234,6 +234,8 @@ import {
234
234
  import { V1_MAPPING_ELEMENT_PROTOCOL_TYPE } from './transformation/pureProtocol/serializationHelpers/V1_MappingSerializationHelper';
235
235
  import { V1_SERVICE_ELEMENT_PROTOCOL_TYPE } from './transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper';
236
236
  import { MappingInclude } from '../../../metamodels/pure/packageableElements/mapping/MappingInclude';
237
+ import type { ModelGenerationConfiguration } from '../../../ModelGenerationConfiguration';
238
+ import type { MappingGeneration_PureProtocolProcessorPlugin_Extension } from '../MappingGeneration_PureProtocolProcessorPlugin_Extension';
237
239
 
238
240
  const V1_FUNCTION_SUFFIX_MULTIPLICITY_INFINITE = 'MANY';
239
241
 
@@ -411,7 +413,6 @@ const indexPureModelContextData = (
411
413
  interface V1_GraphBuilderInput {
412
414
  model: BasicModel;
413
415
  data: V1_PureModelContextDataIndex;
414
- parentElementPath?: string | undefined;
415
416
  }
416
417
 
417
418
  export interface V1_EngineSetupConfig {
@@ -421,7 +422,7 @@ export interface V1_EngineSetupConfig {
421
422
  }
422
423
 
423
424
  export class V1_PureGraphManager extends AbstractPureGraphManager {
424
- engine!: V1_Engine;
425
+ engine: V1_Engine;
425
426
  extensions: V1_GraphBuilderExtensions;
426
427
 
427
428
  constructor(pluginManager: GraphPluginManager, log: Log) {
@@ -461,6 +462,8 @@ export class V1_PureGraphManager extends AbstractPureGraphManager {
461
462
  buildGenerationSpecifications: flow,
462
463
  });
463
464
 
465
+ this.engine = new V1_Engine({}, log);
466
+
464
467
  // setup plugins
465
468
  this.extensions = new V1_GraphBuilderExtensions(
466
469
  this.pluginManager.getPureProtocolProcessorPlugins(),
@@ -958,28 +961,6 @@ export class V1_PureGraphManager extends AbstractPureGraphManager {
958
961
  ),
959
962
  );
960
963
  }
961
- if (!options?.TEMPORARY_skipGeneratedElementsPostProcessing) {
962
- // Assign generated elements to their parent generation element (config that drives generation)
963
- yield Promise.all(
964
- inputs
965
- .filter((input) => Boolean(input.parentElementPath))
966
- .flatMap((input) =>
967
- input.data.elements.map((el) =>
968
- promisify(() =>
969
- runInAction(() => {
970
- // TODO: check performance once `getNullableElement` is optimized
971
- const element = graph.getElement(el.path);
972
- if (input.parentElementPath) {
973
- element.generationParentElement = graph.getElement(
974
- input.parentElementPath,
975
- );
976
- }
977
- }),
978
- ),
979
- ),
980
- ),
981
- );
982
- }
983
964
  /**
984
965
  * For now, we delete the section index. We are able to read both resolved and unresolved element paths
985
966
  * but when we write (serialize) we write only resolved paths. In the future once the issue with dependency is solved we will
@@ -1613,6 +1594,36 @@ export class V1_PureGraphManager extends AbstractPureGraphManager {
1613
1594
  return this.pureModelContextDataToEntities(generatedModel);
1614
1595
  }
1615
1596
 
1597
+ async generateModelFromConfiguration(
1598
+ config: ModelGenerationConfiguration,
1599
+ graph: PureModel,
1600
+ ): Promise<Entity[]> {
1601
+ const model = this.getFullGraphModelData(graph);
1602
+ let generatedModel: V1_PureModelContextData | undefined = undefined;
1603
+ const extraModelGenerators = this.pluginManager
1604
+ .getPureProtocolProcessorPlugins()
1605
+ .flatMap(
1606
+ (plugin) =>
1607
+ (
1608
+ plugin as MappingGeneration_PureProtocolProcessorPlugin_Extension
1609
+ ).V1_getExtraModelGeneratorsFromConfiguration?.() ?? [],
1610
+ );
1611
+ for (const generator of extraModelGenerators) {
1612
+ const _model = await generator(config, model, this.engine);
1613
+ if (_model) {
1614
+ generatedModel = _model;
1615
+ break;
1616
+ }
1617
+ }
1618
+ if (!generatedModel) {
1619
+ throw new UnsupportedOperationError(
1620
+ `Can't generate model using the specified configuration: no compatible generator available from plugins`,
1621
+ config,
1622
+ );
1623
+ }
1624
+ return this.pureModelContextDataToEntities(generatedModel);
1625
+ }
1626
+
1616
1627
  // ------------------------------------------- ValueSpecification -------------------------------------------
1617
1628
 
1618
1629
  buildValueSpecification(
@@ -1861,6 +1872,22 @@ export class V1_PureGraphManager extends AbstractPureGraphManager {
1861
1872
  );
1862
1873
  }
1863
1874
 
1875
+ async debugExecutionPlanGeneration(
1876
+ graph: PureModel,
1877
+ mapping: Mapping,
1878
+ lambda: RawLambda,
1879
+ runtime: Runtime,
1880
+ clientVersion: string,
1881
+ ): Promise<{ plan: RawExecutionPlan; debug: string }> {
1882
+ const result = await this.engine.debugExecutionPlanGeneration(
1883
+ this.createExecutionInput(graph, mapping, lambda, runtime, clientVersion),
1884
+ );
1885
+ return {
1886
+ plan: result.plan,
1887
+ debug: result.debug.join('\n'),
1888
+ };
1889
+ }
1890
+
1864
1891
  buildExecutionPlan(
1865
1892
  executionPlanJson: PlainObject<V1_ExecutionPlan>,
1866
1893
  graph: PureModel,
@@ -2047,6 +2074,9 @@ export class V1_PureGraphManager extends AbstractPureGraphManager {
2047
2074
  );
2048
2075
  }
2049
2076
 
2077
+ // TODO: we could potentially reshape this method to build light graph with just indexing
2078
+ // and return a slightly more complicated object instead: separating the graph and the dependencies part instead of
2079
+ // return a list of `V1_GraphBuilderInput`. This method would be useful for any other light graph builder algo.
2050
2080
  async indexEntitiesWithDependencyIntoGraph(
2051
2081
  graph: PureModel,
2052
2082
  _entities: Entity[],
@@ -448,6 +448,14 @@ export class V1_Engine {
448
448
  );
449
449
  }
450
450
 
451
+ debugExecutionPlanGeneration(
452
+ input: V1_ExecuteInput,
453
+ ): Promise<{ plan: PlainObject<V1_ExecutionPlan>; debug: string[] }> {
454
+ return this.engineServerClient.debugPlanGeneration(
455
+ V1_ExecuteInput.serialization.toJson(input),
456
+ );
457
+ }
458
+
451
459
  generateMappingTestData(input: V1_ExecuteInput): Promise<string> {
452
460
  return this.engineServerClient.generateTestDataWithDefaultSeed(
453
461
  V1_ExecuteInput.serialization.toJson(input),
@@ -290,6 +290,7 @@ export class V1_EngineServerClient extends AbstractServerClient {
290
290
  // ------------------------------------------- Execute -------------------------------------------
291
291
 
292
292
  _execution = (): string => `${this._pure()}/execution`;
293
+
293
294
  execute = (
294
295
  input: PlainObject<V1_ExecuteInput>,
295
296
  options?: {
@@ -322,6 +323,20 @@ export class V1_EngineServerClient extends AbstractServerClient {
322
323
  undefined,
323
324
  { enableCompression: true },
324
325
  );
326
+
327
+ debugPlanGeneration = (
328
+ input: PlainObject<V1_ExecuteInput>,
329
+ ): Promise<{ plan: PlainObject<V1_ExecutionPlan>; debug: string[] }> =>
330
+ this.postWithTracing(
331
+ this.getTraceData(CORE_ENGINE_TRACER_SPAN.GENERATE_EXECUTION_PLAN),
332
+ `${this._execution()}/generatePlan/debug`,
333
+ input,
334
+ {},
335
+ undefined,
336
+ undefined,
337
+ { enableCompression: true },
338
+ );
339
+
325
340
  generateTestDataWithDefaultSeed = (
326
341
  input: PlainObject<V1_ExecuteInput>,
327
342
  ): Promise<string> =>
@@ -19,6 +19,7 @@ import {
19
19
  assertNonEmptyString,
20
20
  assertTrue,
21
21
  } from '@finos/legend-shared';
22
+ import { addPackageElement } from '../../../../../../DomainModifierHelper';
22
23
  import type { PackageableElement } from '../../../../../../metamodels/pure/packageableElements/PackageableElement';
23
24
  import type { V1_PackageableElement } from '../../../model/packageableElements/V1_PackageableElement';
24
25
  import type { V1_GraphBuilderContext } from './V1_GraphBuilderContext';
@@ -121,9 +122,10 @@ export class V1_ElementBuilder<T extends V1_PackageableElement> {
121
122
  `Element '${path}' already exists`,
122
123
  );
123
124
  const element = this.firstPass(elementProtocol, context);
124
- context.currentSubGraph
125
- .getOrCreatePackage(elementProtocol.package)
126
- .addElement(element);
125
+ addPackageElement(
126
+ context.currentSubGraph.getOrCreatePackage(elementProtocol.package),
127
+ element,
128
+ );
127
129
  return element;
128
130
  }
129
131