@finos/legend-graph 28.0.3 → 28.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.
- package/lib/graph/BasicModel.d.ts.map +1 -1
- package/lib/graph/BasicModel.js +1 -1
- package/lib/graph/BasicModel.js.map +1 -1
- package/lib/graph/Core_HashUtils.d.ts +1 -0
- package/lib/graph/Core_HashUtils.d.ts.map +1 -1
- package/lib/graph/Core_HashUtils.js +1 -0
- package/lib/graph/Core_HashUtils.js.map +1 -1
- package/lib/graph/DependencyManager.d.ts +23 -19
- package/lib/graph/DependencyManager.d.ts.map +1 -1
- package/lib/graph/DependencyManager.js +16 -4
- package/lib/graph/DependencyManager.js.map +1 -1
- package/lib/graph/GraphDataOrigin.d.ts +5 -0
- package/lib/graph/GraphDataOrigin.d.ts.map +1 -1
- package/lib/graph/GraphDataOrigin.js +7 -0
- package/lib/graph/GraphDataOrigin.js.map +1 -1
- package/lib/graph/MetaModelUtils.d.ts +1 -0
- package/lib/graph/MetaModelUtils.d.ts.map +1 -1
- package/lib/graph/MetaModelUtils.js +3 -0
- package/lib/graph/MetaModelUtils.js.map +1 -1
- package/lib/graph/metamodel/pure/packageableElements/store/relational/model/RelationalDataType.d.ts +3 -0
- package/lib/graph/metamodel/pure/packageableElements/store/relational/model/RelationalDataType.d.ts.map +1 -1
- package/lib/graph/metamodel/pure/packageableElements/store/relational/model/RelationalDataType.js +5 -0
- package/lib/graph/metamodel/pure/packageableElements/store/relational/model/RelationalDataType.js.map +1 -1
- package/lib/graph-manager/GraphData.d.ts +1 -1
- package/lib/graph-manager/GraphData.d.ts.map +1 -1
- package/lib/graph-manager/GraphData.js +1 -1
- package/lib/graph-manager/GraphData.js.map +1 -1
- package/lib/graph-manager/action/changeDetection/STO_Relational_ObserverHelper.d.ts.map +1 -1
- package/lib/graph-manager/action/changeDetection/STO_Relational_ObserverHelper.js +3 -2
- package/lib/graph-manager/action/changeDetection/STO_Relational_ObserverHelper.js.map +1 -1
- package/lib/graph-manager/action/validation/DSL_Service_ValidationHelper.d.ts.map +1 -1
- package/lib/graph-manager/action/validation/DSL_Service_ValidationHelper.js +3 -0
- package/lib/graph-manager/action/validation/DSL_Service_ValidationHelper.js.map +1 -1
- package/lib/graph-manager/protocol/pure/PureProtocolProcessorPlugin.d.ts +1 -9
- package/lib/graph-manager/protocol/pure/PureProtocolProcessorPlugin.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/PureProtocolProcessorPlugin.js.map +1 -1
- package/lib/graph-manager/protocol/pure/extensions/DSL_ExternalFormat_PureProtocolProcessorPlugin.d.ts +1 -2
- package/lib/graph-manager/protocol/pure/extensions/DSL_ExternalFormat_PureProtocolProcessorPlugin.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/extensions/DSL_ExternalFormat_PureProtocolProcessorPlugin.js +0 -5
- package/lib/graph-manager/protocol/pure/extensions/DSL_ExternalFormat_PureProtocolProcessorPlugin.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_PureGraphManager.d.ts +3 -5
- package/lib/graph-manager/protocol/pure/v1/V1_PureGraphManager.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_PureGraphManager.js +73 -86
- package/lib/graph-manager/protocol/pure/v1/V1_PureGraphManager.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/engine/execution/V1_ExecuteInput.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/engine/execution/V1_ExecuteInput.js +3 -4
- package/lib/graph-manager/protocol/pure/v1/engine/execution/V1_ExecuteInput.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/engine/generation/V1_GenerationInput.d.ts +1 -1
- package/lib/graph-manager/protocol/pure/v1/engine/generation/V1_GenerationInput.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/engine/generation/V1_GenerationInput.js +3 -3
- package/lib/graph-manager/protocol/pure/v1/engine/generation/V1_GenerationInput.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/model/context/V1_PureModelContextData.d.ts +7 -0
- package/lib/graph-manager/protocol/pure/v1/model/context/V1_PureModelContextData.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/model/context/V1_PureModelContextData.js +6 -0
- package/lib/graph-manager/protocol/pure/v1/model/context/V1_PureModelContextData.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/store/relational/model/V1_RelationalDataType.d.ts +3 -0
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/store/relational/model/V1_RelationalDataType.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/store/relational/model/V1_RelationalDataType.js +5 -0
- package/lib/graph-manager/protocol/pure/v1/model/packageableElements/store/relational/model/V1_RelationalDataType.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DatabaseTransformer.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DatabaseTransformer.js +5 -2
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DatabaseTransformer.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_DatabaseBuilderHelper.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_DatabaseBuilderHelper.js +5 -2
- package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_DatabaseBuilderHelper.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_PureProtocolSerialization.d.ts +1 -0
- package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_PureProtocolSerialization.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_PureProtocolSerialization.js +10 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_PureProtocolSerialization.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_DatabaseSerializationHelper.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_DatabaseSerializationHelper.js +10 -1
- package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_DatabaseSerializationHelper.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/package.json +1 -1
- package/package.json +3 -3
- package/src/graph/BasicModel.ts +1 -3
- package/src/graph/Core_HashUtils.ts +1 -0
- package/src/graph/DependencyManager.ts +39 -21
- package/src/graph/GraphDataOrigin.ts +11 -0
- package/src/graph/MetaModelUtils.ts +8 -0
- package/src/graph/metamodel/pure/packageableElements/store/relational/model/RelationalDataType.ts +6 -0
- package/src/graph-manager/GraphData.ts +1 -1
- package/src/graph-manager/action/changeDetection/STO_Relational_ObserverHelper.ts +3 -1
- package/src/graph-manager/action/validation/DSL_Service_ValidationHelper.ts +2 -0
- package/src/graph-manager/protocol/pure/PureProtocolProcessorPlugin.ts +0 -11
- package/src/graph-manager/protocol/pure/extensions/DSL_ExternalFormat_PureProtocolProcessorPlugin.ts +0 -17
- package/src/graph-manager/protocol/pure/v1/V1_PureGraphManager.ts +110 -145
- package/src/graph-manager/protocol/pure/v1/engine/execution/V1_ExecuteInput.ts +5 -4
- package/src/graph-manager/protocol/pure/v1/engine/generation/V1_GenerationInput.ts +4 -3
- package/src/graph-manager/protocol/pure/v1/model/context/V1_PureModelContextData.ts +7 -0
- package/src/graph-manager/protocol/pure/v1/model/packageableElements/store/relational/model/V1_RelationalDataType.ts +6 -0
- package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DatabaseTransformer.ts +4 -0
- package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_DatabaseBuilderHelper.ts +4 -0
- package/src/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_PureProtocolSerialization.ts +17 -1
- package/src/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_DatabaseSerializationHelper.ts +10 -0
- package/src/index.ts +2 -0
|
@@ -100,9 +100,10 @@ import { V1_LambdaReturnTypeInput } from './engine/compilation/V1_LambdaReturnTy
|
|
|
100
100
|
import { MultiExecutionServiceTestResult } from '../../../../graph/metamodel/pure/packageableElements/service/MultiExecutionServiceTestResult.js';
|
|
101
101
|
import { V1_ExecutionEnvironmentInstance } from './model/packageableElements/service/V1_ExecutionEnvironmentInstance.js';
|
|
102
102
|
import { V1_EntitlementReportAnalyticsInput, V1_StoreEntitlementAnalysisInput, V1_buildDatasetEntitlementReport, V1_buildDatasetSpecification, V1_transformDatasetSpecification, } from './engine/analytics/V1_StoreEntitlementAnalysis.js';
|
|
103
|
-
import { LegendSDLC, } from '../../../../graph/GraphDataOrigin.js';
|
|
104
|
-
import {
|
|
103
|
+
import { LegendSDLC, GraphEntities, } from '../../../../graph/GraphDataOrigin.js';
|
|
104
|
+
import { InMemoryGraphData, GraphDataWithOrigin, } from '../../../GraphData.js';
|
|
105
105
|
import { DEPRECATED__validate_MappingTest } from '../../../action/validation/DSL_Mapping_ValidationHelper.js';
|
|
106
|
+
import { V1_SERVICE_ELEMENT_PROTOCOL_TYPE } from './transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.js';
|
|
106
107
|
class V1_PureModelContextDataIndex {
|
|
107
108
|
elements = [];
|
|
108
109
|
nativeElements = [];
|
|
@@ -128,6 +129,8 @@ const mergePureModelContextData = (...data) => {
|
|
|
128
129
|
const mergedData = new V1_PureModelContextData();
|
|
129
130
|
for (const _data of data) {
|
|
130
131
|
mergedData.elements = mergedData.elements.concat(_data.elements);
|
|
132
|
+
mergedData.INTERNAL__rawDependencyEntities =
|
|
133
|
+
mergedData.INTERNAL__rawDependencyEntities.concat(_data.INTERNAL__rawDependencyEntities);
|
|
131
134
|
mergedData.serializer = _data.serializer ?? mergedData.serializer;
|
|
132
135
|
mergedData.origin = _data.origin ?? mergedData.origin;
|
|
133
136
|
}
|
|
@@ -344,6 +347,12 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
344
347
|
}));
|
|
345
348
|
// build
|
|
346
349
|
await this.buildGraphFromInputs(graph, buildInputs, report, stopWatch, buildState, options);
|
|
350
|
+
// set dependency manager graph origin to entities
|
|
351
|
+
if (dependencyManager.origin === undefined) {
|
|
352
|
+
dependencyManager.setOrigin(new GraphEntities(Array.from(dependencyEntitiesIndex.values())
|
|
353
|
+
.map((e) => e.entities)
|
|
354
|
+
.flat()));
|
|
355
|
+
}
|
|
347
356
|
buildState.pass();
|
|
348
357
|
const totalTime = stopWatch.elapsed;
|
|
349
358
|
report.timings = {
|
|
@@ -389,10 +398,6 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
389
398
|
if (!options?.TEMPORARY__preserveSectionIndex) {
|
|
390
399
|
graph.TEMPORARY__deleteOwnSectionIndex();
|
|
391
400
|
}
|
|
392
|
-
/**
|
|
393
|
-
* This sets the SDLC of the graph if there exists a versioned `SDLC` of the graph. This means the graph is immutable and we can easily `refetch`
|
|
394
|
-
* the graph with the provided sdlc pointer
|
|
395
|
-
*/
|
|
396
401
|
if (options?.origin) {
|
|
397
402
|
graph.setOrigin(options.origin);
|
|
398
403
|
}
|
|
@@ -958,14 +963,10 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
958
963
|
return this.pureModelContextDataToEntities(graphData);
|
|
959
964
|
};
|
|
960
965
|
// --------------------------------------------- Execution ---------------------------------------------
|
|
961
|
-
createExecutionInput = (graph, mapping, lambda, runtime, clientVersion, parameterValues) => this.
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
: this.buildExecutionInputGraphData(graph, mapping, runtime);
|
|
966
|
-
return this.buildExecutionInputWithPureModelContext(pureModelContext, mapping, lambda, runtime, clientVersion, executeInput, parameterValues);
|
|
967
|
-
};
|
|
968
|
-
buildExecutionInputWithPureModelContext = (pureModelContext, mapping, lambda, runtime, clientVersion, executeInput, parameterValues) => {
|
|
966
|
+
createExecutionInput = (graph, mapping, lambda, runtime, clientVersion, parameterValues) => this.createExecutionInputWithPureModelContext(graph.origin
|
|
967
|
+
? this.buildPureModelSDLCPointer(graph.origin, undefined)
|
|
968
|
+
: this.buildExecutionInputGraphData(graph), mapping, lambda, runtime, clientVersion, new V1_ExecuteInput(), parameterValues);
|
|
969
|
+
createExecutionInputWithPureModelContext = (data, mapping, lambda, runtime, clientVersion, executeInput, parameterValues) => {
|
|
969
970
|
// NOTE: for execution, we usually will just assume that we send the connections embedded in the runtime value, since we don't want the user to have to create
|
|
970
971
|
// packageable runtime and connection just to play with execution.
|
|
971
972
|
executeInput.clientVersion = clientVersion;
|
|
@@ -974,14 +975,14 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
974
975
|
executeInput.runtime = runtime
|
|
975
976
|
? V1_transformRuntime(runtime, new V1_GraphTransformerContextBuilder(this.pluginManager.getPureProtocolProcessorPlugins()).build())
|
|
976
977
|
: undefined;
|
|
977
|
-
executeInput.model =
|
|
978
|
+
executeInput.model = data;
|
|
978
979
|
executeInput.context = new V1_RawBaseExecutionContext(); // TODO: potentially need to support more types
|
|
979
980
|
if (parameterValues) {
|
|
980
|
-
executeInput.parameterValues = parameterValues.map((
|
|
981
|
+
executeInput.parameterValues = parameterValues.map((parameterValue) => V1_transformParameterValue(parameterValue));
|
|
981
982
|
}
|
|
982
983
|
return executeInput;
|
|
983
984
|
};
|
|
984
|
-
buildExecutionInputGraphData(graph
|
|
985
|
+
buildExecutionInputGraphData(graph) {
|
|
985
986
|
/**
|
|
986
987
|
* NOTE: to lessen network load, we might need to think of a way to only include relevant part of the pure model context data here
|
|
987
988
|
*
|
|
@@ -996,13 +997,7 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
996
997
|
* for mapping used for execution, but this can generalized if we introduce hierarchy/ranking for model type
|
|
997
998
|
*/
|
|
998
999
|
const graphData = this.getFullGraphModelData(graph);
|
|
999
|
-
const prunedGraphData =
|
|
1000
|
-
const extraExecutionElements = this.pluginManager
|
|
1001
|
-
.getPureProtocolProcessorPlugins()
|
|
1002
|
-
.flatMap((element) => element.V1_getExtraExecutionInputCollectors?.() ?? [])
|
|
1003
|
-
.flatMap((getter) => getter(graph, mapping, runtime, graphData));
|
|
1004
|
-
prunedGraphData.elements = uniq(graphData.elements
|
|
1005
|
-
.filter((element) => element instanceof V1_Class ||
|
|
1000
|
+
const prunedGraphData = this.prunePureModelContextData(graphData, (element) => element instanceof V1_Class ||
|
|
1006
1001
|
element instanceof V1_Enumeration ||
|
|
1007
1002
|
element instanceof V1_Profile ||
|
|
1008
1003
|
element instanceof V1_Association ||
|
|
@@ -1011,8 +1006,15 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1011
1006
|
element instanceof V1_Store ||
|
|
1012
1007
|
element instanceof V1_PackageableConnection ||
|
|
1013
1008
|
element instanceof V1_PackageableRuntime ||
|
|
1014
|
-
element instanceof V1_Mapping)
|
|
1015
|
-
|
|
1009
|
+
element instanceof V1_Mapping, undefined);
|
|
1010
|
+
const extraExecutionElements = this.pluginManager
|
|
1011
|
+
.getPureProtocolProcessorPlugins()
|
|
1012
|
+
.flatMap((element) => element.V1_getExtraExecutionInputCollectors?.() ?? [])
|
|
1013
|
+
.flatMap((getter) => getter(graph, graphData));
|
|
1014
|
+
prunedGraphData.elements = uniq([
|
|
1015
|
+
...prunedGraphData.elements,
|
|
1016
|
+
...extraExecutionElements,
|
|
1017
|
+
]);
|
|
1016
1018
|
return prunedGraphData;
|
|
1017
1019
|
}
|
|
1018
1020
|
async runQuery(lambda, mapping, runtime, graph, options, _report) {
|
|
@@ -1033,17 +1035,17 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1033
1035
|
const stopWatch = new StopWatch();
|
|
1034
1036
|
const pureModelContext = graph.origin
|
|
1035
1037
|
? this.buildPureModelSDLCPointer(graph.origin, undefined)
|
|
1036
|
-
: this.buildExecutionInputGraphData(graph
|
|
1038
|
+
: this.buildExecutionInputGraphData(graph);
|
|
1037
1039
|
stopWatch.record(GRAPH_MANAGER_EVENT.V1_ENGINE_OPERATION_INPUT__SUCCESS);
|
|
1038
1040
|
await Promise.all(tests.map((t) => this.DEPRECATED__runLegacyMappingTest(t, mapping, pureModelContext, options, report)));
|
|
1039
1041
|
}
|
|
1040
|
-
async DEPRECATED__runLegacyMappingTest(testInfo, mapping,
|
|
1042
|
+
async DEPRECATED__runLegacyMappingTest(testInfo, mapping, data, options, _report) {
|
|
1041
1043
|
const report = _report ?? createGraphManagerOperationReport();
|
|
1042
1044
|
try {
|
|
1043
1045
|
const stopWatch = new StopWatch();
|
|
1044
1046
|
stopWatch.record(GRAPH_MANAGER_EVENT.V1_ENGINE_OPERATION_INPUT__SUCCESS);
|
|
1045
1047
|
DEPRECATED__validate_MappingTest(testInfo.test);
|
|
1046
|
-
const input = this.
|
|
1048
|
+
const input = this.createExecutionInputWithPureModelContext(data, mapping, testInfo.test.query, testInfo.runtime, V1_PureGraphManager.PROD_PROTOCOL_VERSION, new V1_ExecuteInput(), options?.parameterValues);
|
|
1047
1049
|
const result = V1_buildExecutionResult(await this.engine.executeMapping(input, options));
|
|
1048
1050
|
stopWatch.record(GRAPH_MANAGER_EVENT.V1_ENGINE_OPERATION_SERVER_CALL__SUCCESS);
|
|
1049
1051
|
report.timings = {
|
|
@@ -1090,7 +1092,9 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1090
1092
|
const report = _report ?? createGraphManagerOperationReport();
|
|
1091
1093
|
const stopWatch = new StopWatch();
|
|
1092
1094
|
const testDataGenerationExecuteInput = new V1_TestDataGenerationExecutionInput();
|
|
1093
|
-
this.
|
|
1095
|
+
this.createExecutionInputWithPureModelContext(graph.origin
|
|
1096
|
+
? this.buildPureModelSDLCPointer(graph.origin, undefined)
|
|
1097
|
+
: this.buildExecutionInputGraphData(graph), mapping, lambda, runtime, V1_PureGraphManager.DEV_PROTOCOL_VERSION, testDataGenerationExecuteInput);
|
|
1094
1098
|
testDataGenerationExecuteInput.parameters = parameters;
|
|
1095
1099
|
testDataGenerationExecuteInput.hashStrings = Boolean(options?.anonymizeGeneratedData);
|
|
1096
1100
|
stopWatch.record(GRAPH_MANAGER_EVENT.V1_ENGINE_OPERATION_INPUT__SUCCESS);
|
|
@@ -1119,7 +1123,8 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1119
1123
|
const protocol = new V1_Protocol(V1_PureGraphManager.PURE_PROTOCOL_NAME, serverServiceInfo.services.dependencies.pure);
|
|
1120
1124
|
switch (executionMode) {
|
|
1121
1125
|
case ServiceExecutionMode.FULL_INTERACTIVE: {
|
|
1122
|
-
const data = this.
|
|
1126
|
+
const data = this.createServiceRegistrationInputGraphData(graph);
|
|
1127
|
+
data.elements.push(this.elementToProtocol(service));
|
|
1123
1128
|
data.origin = new V1_PureModelContextPointer(protocol);
|
|
1124
1129
|
input = data;
|
|
1125
1130
|
break;
|
|
@@ -1180,8 +1185,9 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1180
1185
|
const protocol = new V1_Protocol(V1_PureGraphManager.PURE_PROTOCOL_NAME, serverServiceInfo.services.dependencies.pure);
|
|
1181
1186
|
switch (executionMode) {
|
|
1182
1187
|
case ServiceExecutionMode.FULL_INTERACTIVE: {
|
|
1183
|
-
|
|
1184
|
-
|
|
1188
|
+
services.forEach((service) => {
|
|
1189
|
+
const data = this.prunePureModelContextData(this.createServiceRegistrationInputGraphData(graph));
|
|
1190
|
+
data.elements.push(this.elementToProtocol(service));
|
|
1185
1191
|
data.origin = new V1_PureModelContextPointer(protocol);
|
|
1186
1192
|
input.push(data);
|
|
1187
1193
|
});
|
|
@@ -1264,23 +1270,16 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1264
1270
|
const serviceStorage = await this.engine.getServiceVersionInfo(serviceUrl, serviceId);
|
|
1265
1271
|
await this.engine.activateServiceGeneration(serviceUrl, serviceStorage.getGenerationId());
|
|
1266
1272
|
}
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
prunedGraphData.elements.push(this.elementToProtocol(service));
|
|
1272
|
-
return prunedGraphData;
|
|
1273
|
-
};
|
|
1274
|
-
createBulkServiceRegistrationInput = (graph, services) => {
|
|
1273
|
+
// NOTE: We almost should never be poking into dependency entities. However for service registration the input
|
|
1274
|
+
// expects only one service in the graph data. Perhaps, the service registration API should be modified to accept
|
|
1275
|
+
// service as a parameter outside the model
|
|
1276
|
+
createServiceRegistrationInputGraphData = (graph) => {
|
|
1275
1277
|
const graphData = this.getFullGraphModelData(graph);
|
|
1276
|
-
const
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
prunedGraphData.elements = graphData.elements.filter((element) => !(element instanceof V1_Service));
|
|
1280
|
-
prunedGraphData.elements.push(this.elementToProtocol(service));
|
|
1281
|
-
results.push(prunedGraphData);
|
|
1278
|
+
const prunedGraphData = this.prunePureModelContextData(graphData, (element) => !(element instanceof V1_Service), (entity) => {
|
|
1279
|
+
const content = entity.content;
|
|
1280
|
+
return content._type !== V1_SERVICE_ELEMENT_PROTOCOL_TYPE;
|
|
1282
1281
|
});
|
|
1283
|
-
return
|
|
1282
|
+
return prunedGraphData;
|
|
1284
1283
|
};
|
|
1285
1284
|
// --------------------------------------------- Query ---------------------------------------------
|
|
1286
1285
|
async searchQueries(searchSpecification) {
|
|
@@ -1341,44 +1340,13 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1341
1340
|
: element.path, element.hashCode))));
|
|
1342
1341
|
return hashMap;
|
|
1343
1342
|
}
|
|
1344
|
-
// ---------------------------------------- Analysis ----------------------------------------
|
|
1345
|
-
buildMappingModelCoverageAnalysisInputContextData = (graph) => {
|
|
1346
|
-
/**
|
|
1347
|
-
* To lessen network load, we only include relevant part of the pure model context data here
|
|
1348
|
-
*
|
|
1349
|
-
* Graph data models can be classified based on dependency hieararchy:
|
|
1350
|
-
* 1. Building blocks: models that all other models depend on: e.g. domain models, connections, etc.
|
|
1351
|
-
* 2. Consumers: models that depends on other models: e.g. mapping, service, etc.
|
|
1352
|
-
* 3. Unrelated: models that depends on nothing and vice versa: e.g. text
|
|
1353
|
-
*
|
|
1354
|
-
* For analyzing mapping, we choose to include some building blocks and mappings.
|
|
1355
|
-
*/
|
|
1356
|
-
const graphData = this.getFullGraphModelData(graph);
|
|
1357
|
-
const prunedGraphData = new V1_PureModelContextData();
|
|
1358
|
-
const extraElements = this.pluginManager
|
|
1359
|
-
.getPureProtocolProcessorPlugins()
|
|
1360
|
-
.flatMap((element) => element.V1_getExtraMappingModelCoverageAnalysisInputCollectors?.() ??
|
|
1361
|
-
[])
|
|
1362
|
-
.flatMap((getter) => getter(graph, graphData));
|
|
1363
|
-
prunedGraphData.elements = uniq(graphData.elements
|
|
1364
|
-
.filter((element) => element instanceof V1_Class ||
|
|
1365
|
-
element instanceof V1_Enumeration ||
|
|
1366
|
-
element instanceof V1_Profile ||
|
|
1367
|
-
element instanceof V1_Association ||
|
|
1368
|
-
element instanceof V1_ConcreteFunctionDefinition ||
|
|
1369
|
-
element instanceof V1_Measure ||
|
|
1370
|
-
element instanceof V1_Store ||
|
|
1371
|
-
element instanceof V1_Mapping)
|
|
1372
|
-
.concat(extraElements));
|
|
1373
|
-
return prunedGraphData;
|
|
1374
|
-
};
|
|
1375
1343
|
async analyzeMappingModelCoverage(mapping, graph) {
|
|
1376
1344
|
const input = new V1_MappingModelCoverageAnalysisInput();
|
|
1377
1345
|
input.clientVersion = V1_PureGraphManager.DEV_PROTOCOL_VERSION;
|
|
1378
1346
|
input.mapping = mapping.path;
|
|
1379
1347
|
input.model = graph.origin
|
|
1380
1348
|
? this.buildPureModelSDLCPointer(graph.origin, undefined)
|
|
1381
|
-
: this.
|
|
1349
|
+
: this.buildExecutionInputGraphData(graph);
|
|
1382
1350
|
return V1_buildModelCoverageAnalysisResult(await this.engine.analyzeMappingModelCoverage(input), mapping);
|
|
1383
1351
|
}
|
|
1384
1352
|
buildMappingModelCoverageAnalysisResult(input, mapping) {
|
|
@@ -1392,8 +1360,8 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1392
1360
|
input.query = query
|
|
1393
1361
|
? V1_transformRawLambda(query, new V1_GraphTransformerContextBuilder(this.pluginManager.getPureProtocolProcessorPlugins()).build())
|
|
1394
1362
|
: undefined;
|
|
1395
|
-
if (graphData instanceof
|
|
1396
|
-
input.model = this.buildExecutionInputGraphData(graphData.graph
|
|
1363
|
+
if (graphData instanceof InMemoryGraphData) {
|
|
1364
|
+
input.model = this.buildExecutionInputGraphData(graphData.graph);
|
|
1397
1365
|
}
|
|
1398
1366
|
else if (graphData instanceof GraphDataWithOrigin) {
|
|
1399
1367
|
input.model = this.buildPureModelSDLCPointer(graphData.origin, V1_PureGraphManager.PROD_PROTOCOL_VERSION);
|
|
@@ -1446,6 +1414,13 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1446
1414
|
return entity;
|
|
1447
1415
|
};
|
|
1448
1416
|
// --------------------------------------------- Shared ---------------------------------------------
|
|
1417
|
+
prunePureModelContextData = (data, elementFilter, entityFilter) => {
|
|
1418
|
+
const prunedGraphData = new V1_PureModelContextData();
|
|
1419
|
+
prunedGraphData.elements = data.elements.filter((element) => elementFilter ? elementFilter(element) : true);
|
|
1420
|
+
prunedGraphData.INTERNAL__rawDependencyEntities =
|
|
1421
|
+
data.INTERNAL__rawDependencyEntities.filter((entity) => entityFilter ? entityFilter(entity) : true);
|
|
1422
|
+
return prunedGraphData;
|
|
1423
|
+
};
|
|
1449
1424
|
buildPureModelSDLCPointer(origin, clientVersion) {
|
|
1450
1425
|
if (origin instanceof LegendSDLC) {
|
|
1451
1426
|
return new V1_PureModelContextPointer(clientVersion
|
|
@@ -1534,6 +1509,10 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1534
1509
|
...contextData1.elements,
|
|
1535
1510
|
...contextData2.elements,
|
|
1536
1511
|
];
|
|
1512
|
+
contextData1.INTERNAL__rawDependencyEntities = [
|
|
1513
|
+
...contextData1.INTERNAL__rawDependencyEntities,
|
|
1514
|
+
...contextData2.INTERNAL__rawDependencyEntities,
|
|
1515
|
+
];
|
|
1537
1516
|
return contextData1;
|
|
1538
1517
|
}
|
|
1539
1518
|
elementProtocolToEntity = (elementProtocol) => ({
|
|
@@ -1628,10 +1607,18 @@ class V1_PureGraphManager extends AbstractPureGraphManager {
|
|
|
1628
1607
|
const graphData = new V1_PureModelContextData();
|
|
1629
1608
|
const dependencyManager = graph.dependencyManager;
|
|
1630
1609
|
const generatedModel = graph.generationModel;
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1610
|
+
let elements = [...generatedModel.allOwnElements];
|
|
1611
|
+
if (dependencyManager.origin instanceof GraphEntities) {
|
|
1612
|
+
// If dependency manager holds the original entities we will just use those to save on transforming/serialization
|
|
1613
|
+
// of dependency elements. This can further be improved by adding support for PureModelContext composite so engine understands
|
|
1614
|
+
// list of pure model context sdlc pointers for dependencies.
|
|
1615
|
+
graphData.INTERNAL__rawDependencyEntities =
|
|
1616
|
+
dependencyManager.origin.entities;
|
|
1617
|
+
}
|
|
1618
|
+
else {
|
|
1619
|
+
elements = [...dependencyManager.allOwnElements, ...elements];
|
|
1620
|
+
}
|
|
1621
|
+
graphData.elements = elements.map((element) => this.elementToProtocol(element));
|
|
1635
1622
|
this.logService.info(LogEvent.create(GRAPH_MANAGER_EVENT.COLLECT_GRAPH_COMPILE_CONTEXT__SUCCESS), Date.now() - startTime, 'ms');
|
|
1636
1623
|
return graphData;
|
|
1637
1624
|
};
|