@finos/legend-graph
Version:
Legend graph and graph manager
197 lines • 15 kB
TypeScript
/**
* Copyright (c) 2020-present, Goldman Sachs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { type LogService, type PlainObject, type ServerClientConfig } from '@finos/legend-shared';
import type { RawLambda } from '../../../../../graph/metamodel/pure/rawValueSpecification/RawLambda.js';
import { GenerationMode, type GenerationConfigurationDescription } from '../../../../action/generation/GenerationConfigurationDescription.js';
import { TEMPORARY__AbstractEngineConfig } from '../../../../action/TEMPORARY__AbstractEngineConfig.js';
import { V1_EngineServerClient, type V1_GrammarParserBatchInputEntry } from './V1_EngineServerClient.js';
import { V1_PureModelContextData } from '../model/context/V1_PureModelContextData.js';
import { V1_LambdaReturnTypeInput } from './compilation/V1_LambdaReturnType.js';
import type { V1_RawLambda } from '../model/rawValueSpecification/V1_RawLambda.js';
import { V1_GenerationOutput } from './generation/V1_GenerationOutput.js';
import type { V1_RawRelationalOperationElement } from '../model/packageableElements/store/relational/model/V1_RawRelationalOperationElement.js';
import type { RawRelationalOperationElement } from '../../../../../graph/metamodel/pure/packageableElements/store/relational/model/RawRelationalOperationElement.js';
import type { PureProtocolProcessorPlugin } from '../../PureProtocolProcessorPlugin.js';
import { V1_LightQuery, V1_Query } from './query/V1_Query.js';
import { type V1_DatabaseBuilderInput } from './generation/V1_DatabaseBuilderInput.js';
import { type V1_ServiceConfigurationInfo } from './service/V1_ServiceConfiguration.js';
import { V1_ExecuteInput, V1_TestDataGenerationExecutionInput, V1_TestDataGenerationExecutionWithSeedInput } from './execution/V1_ExecuteInput.js';
import type { V1_ExecutionPlan } from '../model/executionPlan/V1_ExecutionPlan.js';
import { type V1_ExecutionResult } from './execution/V1_ExecutionResult.js';
import { V1_ServiceStorage } from './service/V1_ServiceStorage.js';
import { V1_ServiceRegistrationResult } from './service/V1_ServiceRegistrationResult.js';
import type { V1_PureModelContext } from '../model/context/V1_PureModelContext.js';
import { V1_QuerySearchSpecification } from './query/V1_QuerySearchSpecification.js';
import type { ExecutionOptions, TEMPORARY__EngineSetupConfig } from '../../../../AbstractPureGraphManager.js';
import type { ExternalFormatDescription } from '../../../../action/externalFormat/ExternalFormatDescription.js';
import { V1_ExternalFormatModelGenerationInput } from './externalFormat/V1_ExternalFormatModelGeneration.js';
import { V1_RunTestsInput } from './test/V1_RunTestsInput.js';
import { V1_RunTestsResult } from './test/V1_RunTestsResult.js';
import { V1_MappingModelCoverageAnalysisInput, V1_MappingModelCoverageAnalysisResult } from './analytics/V1_MappingModelCoverageAnalysis.js';
import type { ServiceExecutionMode } from '../../../../action/service/ServiceExecutionMode.js';
import type { V1_CompilationResult, V1_TextCompilationResult } from './compilation/V1_CompilationResult.js';
import { V1_GenerateSchemaInput } from './externalFormat/V1_GenerateSchemaInput.js';
import type { GraphManagerOperationReport } from '../../../../GraphManagerStatistics.js';
import { V1_StoreEntitlementAnalysisInput, type V1_DatasetEntitlementReport, type V1_DatasetSpecification, type V1_EntitlementReportAnalyticsInput } from './analytics/V1_StoreEntitlementAnalysis.js';
import type { V1_SourceInformation } from '../model/V1_SourceInformation.js';
import type { ClassifierPathMapping, SubtypeInfo } from '../../../../action/protocol/ProtocolInfo.js';
import { V1_FunctionActivatorInfo } from './functionActivator/V1_FunctionActivatorInfo.js';
import { V1_FunctionActivatorInput } from './functionActivator/V1_FunctionActivatorInput.js';
import { type V1_RawSQLExecuteInput } from './execution/V1_RawSQLExecuteInput.js';
import type { V1_ValueSpecification } from '../model/valueSpecification/V1_ValueSpecification.js';
import { V1_ArtifactGenerationExtensionOutput, V1_ArtifactGenerationExtensionInput } from './generation/V1_ArtifactGenerationExtensionApi.js';
import { V1_DatabaseToModelGenerationInput } from './relational/V1_DatabaseToModelGenerationInput.js';
import { V1_TestDataGenerationInput } from './service/V1_TestDataGenerationInput.js';
import { type V1_TestDataGenerationResult } from './service/V1_TestDataGenerationResult.js';
import { V1_RelationalConnectionBuilder } from './relational/V1_RelationalConnectionBuilder.js';
import type { PostValidationAssertionResult } from '../../../../../DSL_Service_Exports.js';
import { V1_DebugTestsResult } from './test/V1_DebugTestsResult.js';
import type { V1_GraphManagerEngine } from './V1_GraphManagerEngine.js';
import { RelationTypeMetadata } from '../../../../action/relation/RelationTypeMetadata.js';
import { V1_CompleteCodeInput } from './compilation/V1_CompleteCodeInput.js';
import { CodeCompletionResult } from '../../../../action/compilation/Completion.js';
import { DeploymentResult } from '../../../../action/DeploymentResult.js';
import { LightPersistentDataCube, PersistentDataCube } from '../../../../action/query/PersistentDataCube.js';
declare class V1_RemoteEngineConfig extends TEMPORARY__AbstractEngineConfig {
private engine;
setEnv(val: string | undefined): void;
setCurrentUserId(val: string | undefined): void;
setBaseUrl(val: string | undefined): void;
setBaseUrlForServiceRegistration(val: string | undefined): void;
setUseClientRequestPayloadCompression(val: boolean): void;
setEnableDebuggingPayload(val: boolean): void;
constructor(engine: V1_RemoteEngine);
}
interface V1_RemoteEngineSetupConfig extends TEMPORARY__EngineSetupConfig {
env: string;
tabSize: number;
clientConfig: ServerClientConfig;
}
/**
* This class defines what the engine is capable of.
* Right now for most engine operations, we make network calls to the engine backend.
* However, this might change in the future if we ever bring some engine functionalities
* to Studio. As such, we want to encapsulate engine client within this class.
*/
export declare class V1_RemoteEngine implements V1_GraphManagerEngine {
private readonly engineServerClient;
readonly logService: LogService;
readonly config: V1_RemoteEngineConfig;
constructor(clientConfig: ServerClientConfig, logService: LogService);
private serializePureModelContext;
setup(config: V1_RemoteEngineSetupConfig): Promise<void>;
/**
* NOTE: ideally, we would not want to leak engine server client like this,
* since the communication with engine client should only be done in this class
* alone. However, we need to expose the client for plugins, tests, and dev tool
* configurations.
*/
getEngineServerClient(): V1_EngineServerClient;
getCurrentUserId(): string | undefined;
getClassifierPathMapping(): Promise<ClassifierPathMapping[]>;
getSubtypeInfo(): Promise<SubtypeInfo>;
private extractElementSourceInformationIndexFromPureModelContextDataJSON;
transformPureModelContextDataToCode(graph: V1_PureModelContextData, pretty: boolean): Promise<string>;
transformCodeToPureModelContextData(code: string, options?: {
sourceInformationIndex?: Map<string, V1_SourceInformation> | undefined;
onError?: () => void;
}): Promise<V1_PureModelContextData>;
private pureCodeToPureModelContextDataJSON;
transformLambdasToCode(input: Map<string, RawLambda>, pretty: boolean, plugins: PureProtocolProcessorPlugin[]): Promise<Map<string, string>>;
transformValueSpecificationsToCode(input: Record<string, PlainObject<V1_ValueSpecification>>, pretty: boolean): Promise<Map<string, string>>;
transformValueSpecificationToCode(input: PlainObject<V1_ValueSpecification>, pretty: boolean): Promise<string>;
transformCodeToValueSpecifications(input: Record<string, V1_GrammarParserBatchInputEntry>): Promise<Map<string, PlainObject>>;
transformCodeToValueSpecification(input: string, returnSourceInformation?: boolean): Promise<PlainObject<V1_ValueSpecification>>;
transformLambdaToCode(lambda: RawLambda, pretty: boolean, plugins: PureProtocolProcessorPlugin[]): Promise<string>;
prettyLambdaContent(lambda: string): Promise<string>;
transformCodeToLambda(code: string, lambdaId?: string, options?: {
pruneSourceInformation?: boolean;
}): Promise<V1_RawLambda>;
transformRelationalOperationElementsToPureCode(input: Map<string, RawRelationalOperationElement>): Promise<Map<string, string>>;
transformPureCodeToRelationalOperationElement(code: string, operationId: string): Promise<V1_RawRelationalOperationElement>;
compilePureModelContextData(model: V1_PureModelContext, options?: {
onError?: (() => void) | undefined;
} | undefined): Promise<V1_CompilationResult>;
compileText(graphText: string, TEMPORARY__report: GraphManagerOperationReport, compileContext?: V1_PureModelContextData, options?: {
onError?: () => void;
getCompilationWarnings?: boolean;
}): Promise<V1_TextCompilationResult>;
combineTextAndPMCD(graphText: string, compileContext: V1_PureModelContextData): Promise<V1_PureModelContextData>;
getLambdaReturnType(lambdaReturnInput: V1_LambdaReturnTypeInput): Promise<string>;
getLambdaReturnTypeFromRawInput(rawInput: PlainObject<V1_LambdaReturnTypeInput>): Promise<string>;
getLambdaRelationTypeFromRawInput(rawInput: V1_LambdaReturnTypeInput): Promise<RelationTypeMetadata>;
getCodeCompletion(rawInput: V1_CompleteCodeInput): Promise<CodeCompletionResult>;
runQuery(input: V1_ExecuteInput, options?: ExecutionOptions): Promise<{
executionResult: V1_ExecutionResult;
executionTraceId?: string;
}>;
exportData(input: V1_ExecuteInput, options?: ExecutionOptions): Promise<Response>;
runQueryAndReturnMap(input: V1_ExecuteInput, options?: ExecutionOptions): Promise<Map<string, string>>;
/**
* For parsing of execution results, we may want to maintain the precision of the numbers
* coming in. To do this, we setup a custom parser for numbers, so that if the number
* is unsafe to convert to number (we lose precision) we will keep them as strings.
* This is useful when displaying the execution results.
*/
parseExecutionResults(executionResultTxt: string, options: ExecutionOptions | undefined): PlainObject<V1_ExecutionResult>;
generateExecutionPlan(input: V1_ExecuteInput): Promise<PlainObject<V1_ExecutionPlan>>;
debugExecutionPlanGeneration(input: V1_ExecuteInput): Promise<{
plan: PlainObject<V1_ExecutionPlan>;
debug: string[];
}>;
generateExecuteTestData(input: V1_TestDataGenerationExecutionInput): Promise<string>;
generateExecuteTestDataWithSeedData(input: V1_TestDataGenerationExecutionWithSeedInput): Promise<string>;
runTests(input: V1_RunTestsInput): Promise<V1_RunTestsResult>;
debugTests(input: V1_RunTestsInput): Promise<V1_DebugTestsResult>;
generateArtifacts(input: V1_ArtifactGenerationExtensionInput): Promise<V1_ArtifactGenerationExtensionOutput>;
generateTestData(input: V1_TestDataGenerationInput, plugins: PureProtocolProcessorPlugin[]): Promise<V1_TestDataGenerationResult>;
getAvailableGenerationConfigurationDescriptions(): Promise<GenerationConfigurationDescription[]>;
generateFile(configs: PlainObject, type: string, generationMode: GenerationMode, model: V1_PureModelContextData): Promise<V1_GenerationOutput[]>;
getAvailableExternalFormatsDescriptions(): Promise<ExternalFormatDescription[]>;
generateModel(input: V1_ExternalFormatModelGenerationInput): Promise<string>;
generateSchema(input: V1_GenerateSchemaInput): Promise<V1_PureModelContextData>;
getServerServiceInfo(): Promise<V1_ServiceConfigurationInfo>;
registerService(input: V1_PureModelContext, server: string, executionMode: ServiceExecutionMode, TEMPORARY__useStoreModel: boolean, TEMPORARY__useGenerateLineage: boolean, TEMPORARY__useGenerateOpenApi: boolean): Promise<V1_ServiceRegistrationResult>;
getServiceVersionInfo(serviceUrl: string, serviceId: string): Promise<V1_ServiceStorage>;
activateServiceGeneration(serviceUrl: string, generationId: string): Promise<void>;
runServicePostVal(servicePath: string, input: V1_PureModelContext, assertionId: string): Promise<PostValidationAssertionResult>;
searchQueries(searchSpecification: V1_QuerySearchSpecification): Promise<V1_LightQuery[]>;
getQueries(queryIds: string[]): Promise<V1_LightQuery[]>;
getQuery(queryId: string): Promise<V1_Query>;
createQuery(query: V1_Query): Promise<V1_Query>;
updateQuery(query: V1_Query): Promise<V1_Query>;
patchQuery(query: Partial<V1_Query>): Promise<V1_Query>;
deleteQuery(queryId: string): Promise<void>;
cancelUserExecutions(broadcastToCluster: boolean): Promise<string>;
searchDataCubes(searchSpecification: V1_QuerySearchSpecification): Promise<LightPersistentDataCube[]>;
getDataCubes(ids: string[]): Promise<LightPersistentDataCube[]>;
getDataCube(id: string): Promise<PersistentDataCube>;
createDataCube(dataCube: PersistentDataCube): Promise<PersistentDataCube>;
updateDataCube(dataCube: PersistentDataCube): Promise<PersistentDataCube>;
deleteDataCube(queryId: string): Promise<void>;
analyzeMappingModelCoverage(input: V1_MappingModelCoverageAnalysisInput): Promise<V1_MappingModelCoverageAnalysisResult>;
surveyDatasets(input: V1_StoreEntitlementAnalysisInput, plugins: PureProtocolProcessorPlugin[]): Promise<V1_DatasetSpecification[]>;
checkDatasetEntitlements(input: V1_EntitlementReportAnalyticsInput, plugins: PureProtocolProcessorPlugin[]): Promise<V1_DatasetEntitlementReport[]>;
buildDatabase(input: V1_DatabaseBuilderInput, plugins: PureProtocolProcessorPlugin[]): Promise<V1_PureModelContextData>;
executeRawSQL(input: V1_RawSQLExecuteInput, plugins: PureProtocolProcessorPlugin[]): Promise<string>;
getAvailableFunctionActivators(): Promise<V1_FunctionActivatorInfo[]>;
validateFunctionActivator(input: V1_FunctionActivatorInput): Promise<void>;
publishFunctionActivatorToSandbox(input: V1_FunctionActivatorInput): Promise<DeploymentResult>;
generateModelsFromDatabaseSpecification(input: V1_DatabaseToModelGenerationInput): Promise<V1_PureModelContextData>;
getAvailableRelationalDatabaseTypeConfigurations(): Promise<V1_RelationalConnectionBuilder[]>;
}
export {};
//# sourceMappingURL=V1_RemoteEngine.d.ts.map