UNPKG

@finos/legend-graph

Version:
409 lines (361 loc) 19.1 kB
/** * 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 { hashArray, hashObject, hashValue } from '@finos/legend-shared'; import { SOURCE_INFORMATION_PROPERTY_KEY_SUFFIX } from './MetaModelConst.js'; /** * The main point of maintaining this enum is to keep lessen magic string in hash computation * so that we are less error-prone in the process of defining hash. * * These tokens will be used in the definition of the hash as marker for the type of the strucure * arguably some of these can be redundant since this information is encoded in the resulting hash * code anyway, but sometimes when polymorphism manifests, such as when we have an array of structure * which are subclasses of an abstract stucture, hashing the marker is sometimes the only way to * discern between instances of different sub-structures * * TODO: when we refactor hashing, we could potentially move this to graphManager/changeDetection/ */ export enum CORE_HASH_STRUCTURE { INTERNAL__UNKNOWN_ELEMENT = 'INTERNAL__UNKNOWN_ELEMENT', INTERNAL__UNKNOWN_PACKAGEABLE_ELEMENT = 'INTERNAL__UNKNOWN_PACKAGEABLE_ELEMENT', INTERNAL__UNKNOWN_FUNCTION_ACTIVATOR = 'INTERNAL__UNKNOWN_FUNCTION_ACTIVATOR', PACKAGE = 'PACKAGE', PACKAGEABLE_ELEMENT = 'PACKAGEABLE_ELEMENT', PACKAGEABLE_ELEMENT_POINTER = 'PACKAGEABLE_ELEMENT_POINTER', // domain PROFILE = 'PROFILE', TAG_POINTER = 'TAG_POINTER', STEREOTYPE_POINTER = 'STEREOTYPE_POINTER', TAGGED_VALUE = 'TAGGED_VALUE', ENUMERATION = 'ENUMERATION', ENUM_VALUE = 'ENUM_VALUE', CLASS = 'CLASS', PROPERTY = 'PROPERTY', PROPERTY_DEFAULT_VALUE = 'PROPERTY_DEFAULT_VALUE', PROPERTY_POINTER = 'PROPERTY_POINTER', MULTIPLICITY = 'MULTIPLICITY', CONSTRAINT = 'CONSTRAINT', DERIVED_PROPERTY = 'DERIVED_PROPERTY', ASSOCIATION = 'ASSOCIATION', FUNCTION = 'FUNCTION', MEASURE = 'MEASURE', UNIT = 'UNIT', // function test FUNCTION_TEST_SUITE = 'FUNCTION_TEST_SUITE', FUNCTION_TEST = 'FUNCTION_TEST', FUNCTION_STORE_TEST_DATA = 'FUNCTION_STORE_TEST_DATA', FUNCTION_PARAMETER_VALUE = 'FUNCTION_PARAMETER_VALUE', // Function Activator FUNCTION_ACTIVATOR_POST_DEPLOYMENT_PROPERTIES = 'FUNCTION_ACTIVATOR_POST_DEPLOYMENT_PROPERTIES', // testable ASSERT_FAIL = 'ASSERT_FAIL', ASSERT_PASS = 'ASSERT_PASS', EQUAL_TO_JSON_ASSERT_FAIL = 'EQUAL_TO_JSON_ASSERT_FAIL', EQUAL_TO = 'EQUAL_TO', EQUAL_TO_JSON = 'EQUAL_TO_JSON', EQUAL_TO_TDS = 'EQUAL_TO_TDS', // section index SECTION_INDEX = 'SECTION_INDEX', SECTION = 'SECTION', IMPORT_AWARE_CODE_SECTION = 'IMPORT_AWARE_CODE_SECTION', DEFAULT_CODE_SECTION = 'DEFAULT_CODE_SECTION', // raw value specification RAW_LAMBDA = 'RAW_LAMBDA', RAW_VARIABLE = 'RAW_VARIABLE', RAW_INSTANCE_VALUE = 'RAW_INSTANCE_VALUE', BINDING_TRANSFORMER = 'BINDING_TRANSFORMER', // value specification INTERNAL__UNKNOWN_VALUE_SPECIFICATION = 'INTERNAL__UNKNOWN_VALUE_SPECIFICATION', INTERNAL__PROPAGATED_VALUE = 'INTERNAL__PROPAGATED_VALUE', VARIABLE_EXPRESSION = 'VARIABLE_EXPRESSION', EXPRESSION = 'EXPRESSION', FUNCTION_EXPRESSION = 'FUNCTION_EXPRESSION', SIMPLE_FUNCTION_EXPRESSION = 'SIMPLE_FUNCTION_EXPRESSION', ABSTRACT_PROPERTY_EXPRESSION = 'ABSTRACT_PROPERTY_EXPRESSION', INSTANCE_VALUE = 'INSTANCE_VALUE', PRIMITIVE_INSTANCE_VALUE = 'PRIMITIVE_INSTANCE_VALUE', ENUM_INSTANCE_VALUE = 'ENUM_INSTANCE_VALUE', KEY_EXPRESSION_INSTANCE_VALUE = 'KEY_EXPRESSION_INSTANCE_VALUE', KEY_EXPRESSION_VALUE = 'KEY_EXPRESSION_VALUE', RUNTIME_INSTANCE_VALUE = 'RUNTIME_INSTANCE_VALUE', PAIR_INSTANCE_VALUE = 'PAIR_INSTANCE_VALUE', MAPPING_INSTANCE_VALUE = 'MAPPING_INSTANCE_VALUE', PURE_LIST_INSTANCE_VALUE = 'PURE_LIST_INSTANCE_VALUE', COLLECTION_INSTANCE_VALUE = 'COLLECTION_INSTANCE_VALUE', LAMBDA_FUNCTION_INSTANCE_VALUE = 'LAMBDA_FUNCTION_INSTANCE_VALUE', FUNCTION_TYPE = 'FUNCTION_TYPE', LAMBDA_FUNCTION = 'LAMBDA_FUNCTION', ALLOY_SERIALIZATION_CONFIG_INSTANCE_VALUE = 'ALLOY_SERIALIZATION_CONFIG_INSTANCE_VALUE', ALLOY_SERIALIZATION_CONFIG = 'ALLOY_SERIALIZATION_CONFIG', ROOT_GRAPH_FETCH_TREE = 'ROOT_GRAPH_FETCH_TREE', PROPERTY_GRAPH_FETCH_TREE = 'PROPERTY_GRAPH_FETCH_TREE', SUBTYPE_GRAPH_FETCH_TREE = 'SUBTYPE_GRAPH_FETCH_TREE', SUBTYPE_GRAPH_FETCH_TREE_INSTANCE_VALUE = 'SUBTYPE_GRAPH_FETCH_TREE_INSTANCE_VALUE', PROPERTY_GRAPH_FETCH_TREE_INSTANCE_VALUE = 'PROEPRTY_GRAPH_FETCH_TREE_INSTANCE_VALUE', ROOT_GRAPH_FETCH_TREE_INSTANCE_VALUE = 'ROOT_GRAPH_FETCH_TREE_INSTANCE_VALUE', RELATION_COL_SPEC_ARRAY = 'RELATION_COL_SPEC_ARRAY', RELATION_COL_SPEC = 'RELATION_COL_SPEC', // ---------------------------------- DSL Mapping -------------------------------------- INTERNAL__UNKNOWN_STORE = 'INTERNAL__UNKNOWN_STORE', INTERNAL__UNKNOWN_CONNECTION = 'INTERNAL__UNKNOWN_CONNECTION', INTERNAL__UNKNOWN_PROPERTY_MAPPING = 'INTERNAL__UNKNOWN_PROPERTY_MAPPING', INTERNAL__UNKNOWN_CLASS_MAPPING = 'INTERNAL__UNKNOWN_CLASS_MAPPING', INTERNAL__UNKNOWN_MAPPING_INCLUDE = 'INTERNAL__UNKNOWN_MAPPING_INCLUDE', MAPPING = 'MAPPING', MAPPING_INCLUDE_MAPPING = 'MAPPING_INCLUDE_MAPPING', ASSOCIATION_IMPLEMENTATION = 'ASSOCIATION_IMPLEMENTATION', RELATIONAL_ASSOCIATION_IMPLEMENTATION = 'RELATIONAL_ASSOCIATION_IMPLEMENTATION', XSTORE_ASSOCIATION_IMPLEMENTATION = 'XSTORE_ASSOCIATION_IMPLEMENTATION', ENUMERATION_MAPPING = 'ENUMERATION_MAPPING', ENUM_VALUE_MAPPING = 'ENUM_VALUE_MAPPING', SET_IMPLEMENTATION = 'SET_IMPLEMENTATION', OPERATION_SET_IMPLEMENTATION = 'OPERATION_SET_IMPLEMENTATION', PURE_INSTANCE_SET_IMPLEMENTATION = 'PURE_INSTANCE_SET_IMPLEMENTATION', PROPERTY_MAPPING = 'PROPERTY_MAPPING', LOCAL_MAPPING_PROPERTY = 'LOCAL_MAPPING_PROPERTY', PURE_PROPERTY_MAPPING = 'PURE_PROPERTY_MAPPING', XSTORE_PROPERTY_MAPPING = 'XSTORE_PROPERTY_MAPPING', MAPPING_TEST_LEGACY = 'MAPPING_TEST_LEGACY', MAPPING_TEST_SUITE = 'MAPPING_TEST_SUITE', MAPPING_TEST = 'MAPPING_TEST', STORE_TEST_DATA = 'STORE_TEST_DATA', INPUT_DATA = 'INPUT_DATA', FLAT_DATA_INPUT_DATA = 'FLAT_DATA_INPUT_DATA', RELATIONAL_INPUT_DATA = 'RELATIONAL_INPUT_DATA', OBJECT_INPUT_DATA = 'OBJECT_INPUT_DATA', MAPPING_TEST_ASSERT = 'MAPPING_TEST_ASSERT', EXPECTED_OUTPUT_MAPPING_TEST_ASSERT = 'EXPECTED_OUTPUT_MAPPING_TEST_ASSERT', FILTER_MAPPING = 'FILTER_MAPPING', COLUMN_MAPPING = 'COLUMN_MAPPING', GROUP_BY_MAPPING = 'GROUP_BY_MAPPING', // runtime RUNTIME = 'RUNTIME', PACKAGEABLE_RUNTIME = 'PACKAGEABLE_RUNTIME', ENGINE_RUNTIME = 'ENGINE_RUNTIME', SINGLE_ENGINE_RUNTIME = 'SINGLE_ENGINE_RUNTIME', LEGACY_RUNTIME = 'LEGACY_RUNTIME', LAKEHOUSE_RUNTIME = 'LAKEHOUSE_RUNTIME', RUNTIME_POINTER = 'RUNTIME_POINTER', STORE_CONNECTIONS = 'STORE_CONNECTIONS', IDENTIFIED_CONNECTION = 'IDENTIFIED_CONNECTION', // connection PACKAGEABLE_CONNECTION = 'PACKAGEABLE_CONNECTION', CONNECTION_POINTER = 'CONNECTION_POINTER', XML_MODEL_CONNECTION = 'XML_MODEL_CONNECTION', JSON_MODEL_CONNECTION = 'JSON_MODEL_CONNECTION', MODEL_CHAIN_CONNECTION = 'MODEL_CHAIN_CONNECTION', FLAT_DATA_CONNECTION = 'FLAT_DATA_CONNECTION', // aggregation aware mapping AGGREGATION_AWARE_MAPPING = 'AGGREGATION_AWARE_MAPPING', AGGREGATION_AWARE_SPECIFICATION = 'AGGREGATION_AWARE_SPECIFICATION', AGGREGATION_AWARE_SET_IMPLEMENTATION_CONTAINER = 'AGGREGATION_AWARE_SET_IMPLEMENTATION_CONTAINER', AGGREGATE_FUNCTION = 'AGGREGATE_FUNCTION', GROUP_BY_FUNCTION = 'GROUP_BY_FUNCTION', // ---------------------------------- DSL Generation -------------------------------------- GENERATION_TREE = 'GENERATION_TREE', GENERATION_TREE_NODE = 'GENERATION_TREE_NODE', FILE_GENERATION = 'FILE_GENERATION', CONFIGURATION_PROPERTY = 'CONFIGURATION_PROPERTY', // ---------------------------------- DSL Data -------------------------------------- INTERNAL__UNKNOWN_EMBEDDED_DATA = 'INTERNAL__UNKNOWN_EMBEDDED_DATA', EXTERNAL_FORMAT_DATA = 'EXTERNAL_FORMAT_DATA', MODEL_STORE_DATA = 'MODEL_STORE_DATA', MODEL_DATA = 'MODEL_DATA', MODEL_EMBEDDED_DATA = 'MODEL_EMBEDDED_DATA', MODEL_INSTANCE_DATA = 'MODEL_INSTANCE_DATA', DATA_ELEMENT_REFERENCE = 'DATA_ELEMENT_REFERENCE', DATA_ELEMENT = 'DATA_ELEMENT', RELATIONAL_CSV_DATA = 'RELATIONAL_CSV_DATA', RELATIONAL_TDS = 'RELATIONAL_TDS', RELATIONAL_CSV_DATA_TABLE = 'RELATIONAL_CSV_DATA_TABLE', // ---------------------------------- DSL External Format -------------------------------------- BINDING = 'BINDING', SCHEMA_SET = 'SCHEMA_SET', SCHEMA = 'SCHEMA', MODEL_UNIT = 'MODEL_UNIT', URL_STREAM = 'URL_STREAM', EXTERNAL_FORMAT_CONNECTION = 'EXTERNAL_FORMAT_CONNECTION', // ---------------------------------- DSL Service -------------------------------------- SERVICE = 'SERVICE', SERVICE_OWNER = 'SERVICE_OWNER', SERVICE_PURE_EXECUTION = 'SERVICE_PURE_EXECUTION', SERVICE_PURE_SINGLE_EXECUTION = 'SERVICE_PURE_SINGLE_EXECUTION', SERVICE_KEYED_EXECUTION_PARAMETER = 'SERVICE_KEYED_EXECUTION_PARAMETER', SERVICE_PURE_MULTI_EXECUTION = 'SERVICE_PURE_MULTI_EXECUTION', SERVICE_TEST_CONTAINER = 'SERVICE_TEST_CONTAINER', SERVICE_LEGACY_SINGLE_EXECUTION_TEST = 'SERVICE_LEGACY_SINGLE_EXECUTION_TEST', SERVICE_LEGACY_KEYED_SINGLE_EXECUTION_TEST = 'SERVICE_LEGACY_KEYED_SINGLE_EXECUTION_TEST', SERVICE_LEGACY_MULTI_EXECUTION_TEST = 'SERVICE_LEGACY_MULTI_EXECUTION_TEST', SERVICE_CONNECTION_TEST_DATA = 'SERVICE_CONNECTION_TEST_DATA', SERVICE_TEST_DATA = 'SERVICE_TEST_DATA', SERVICE_TEST_SUITE = 'SERVICE_TEST_SUITE', SERVICE_TEST = 'SERVICE_TEST', SERVICE_PARAMETER_VALUE = 'SERVICE_PARAMETER_VALUE', SERVICE_POST_VALIDATION = 'SERVICE_POST_VALIDATION', SERVICE_POST_VALIDATION_ASSERTION = 'SERVICE_POST_VALIDATION_ASSERTION', // execution environment instance EXECUTION_ENVIRONMENT_INSTANCE = 'EXECUTION_ENVIRONMENT_INSTANCE', SINGLE_EXECUTION_PARAMETER = 'SINGLE_EXECUTION_PARAMETER', MULTI_EXECUTION_PARAMETER = 'MULTI_EXECUTION_PARAMETER', RUNTIME_COMPONENTS = 'RUNTIME_COMPONENTS', // ---------------------------------- STO Relational -------------------------------------- INTERNAL__UNKNOWN_DATASOURCE_SPECIFICATION = 'INTERNAL__UNKNOWN_DATASOURCE_SPECIFICATION', INTERNAL__UNKNOWN_AUTHENTICATION_STRATEGY = 'INTERNAL__UNKNOWN_AUTHENTICATION_STRATEGY', INTERNAL__UNKNOWN_POST_PROCESSOR = 'INTERNAL__UNKNOWN_POST_PROCESSOR', // database DATABASE = 'DATABASE', DATABASE_SCHEMA = 'DATABASE_SCHEMA', DATABASE_JOIN = 'DATABASE_JOIN', DATABASE_FILTER = 'DATABASE_FILTER', DATBASE_VIEW = 'DATBASE_VIEW', DATABASE_SCHEMA_TABLE = 'DATABASE_SCHEMA_TABLE', DATABASE_SCHEMA_TABULARFUNCTION = 'DATABASE_SCHEMA_TABULARFUNCTION', DATABASE_TABLE_COLUMN = 'DATABASE_TABLE_COLUMN', // relational operation element RELATIONAL = 'RELATIONAL', RELATIONAL_OPERATION_DYNA_FUNC = 'RELATIONAL_OPERATION_DYNA_FUNC', RELATIONAL_OPERATION_ELEMENTS_WITH_JOINS = 'RELATIONAL_OPERATION_ELEMENTS_WITH_JOINS', RELATIONAL_OPERATION_LITERAL = 'RELATIONAL_OPERATION_LITERAL', RELATIONAL_OPERATION_LITERAL_LIST = 'RELATIONAL_OPERATION_LITERAL_LIST', RELATIONAL_OPERATION_TABLE_ALIAS_COLUMN = 'RELATIONAL_OPERATION_TABLE_ALIAS_COLUMN', RELATIONAL_OPERATION_TABLE_POINTER = 'RELATIONAL_OPERATION_TABLE_POINTER', RELATIONAL_OPERATION_JOIN_POINTER = 'RELATIONAL_OPERATION_JOIN_POINTER', // relational data type RELATIONAL_DATATYPE_VARCHAR = 'RELATIONAL_DATATYPE_VARCHAR', RELATIONAL_DATATYPE_CHAR = 'RELATIONAL_DATATYPE_CHAR', RELATIONAL_DATATYPE_VARBINARY = 'RELATIONAL_DATATYPE_VARBINARY', RELATIONAL_DATATYPE_BINARY = 'RELATIONAL_DATATYPE_BINARY', RELATIONAL_DATATYPE_BIT = 'RELATIONAL_DATATYPE_BIT', RELATIONAL_DATATYPE_INTEGER = 'RELATIONAL_DATATYPE_INTEGER', RELATIONAL_DATATYPE_BIGINT = 'RELATIONAL_DATATYPE_BIGINT', RELATIONAL_DATATYPE_SMALLINT = 'RELATIONAL_DATATYPE_SMALLINT', RELATIONAL_DATATYPE_TINYINT = 'RELATIONAL_DATATYPE_TINYINT', RELATIONAL_DATATYPE_NUMERIC = 'RELATIONAL_DATATYPE_NUMERIC', RELATIONAL_DATATYPE_DECIMAL = 'RELATIONAL_DATATYPE_DECIMAL', RELATIONAL_DATATYPE_DOUBLE = 'RELATIONAL_DATATYPE_DOUBLE', RELATIONAL_DATATYPE_FLOAT = 'RELATIONAL_DATATYPE_FLOAT', RELATIONAL_DATATYPE_REAL = 'RELATIONAL_DATATYPE_REAL', RELATIONAL_DATATYPE_DATE = 'RELATIONAL_DATATYPE_DATE', RELATIONAL_DATATYPE_TIMESTAMP = 'RELATIONAL_DATATYPE_TIMESTAMP', RELATIONAL_DATATYPE_OTHER = 'RELATIONAL_DATATYPE_OTHER', RELATIONAL_DATATYPE_SEMISTRUCTURED = 'RELATIONAL_DATATYPE_SEMISTRUCTURED', RELATIONAL_DATATYPE_JSON = 'RELATIONAL_DATATYPE_JSON', // relational mapping ROOT_RELATIONAL_INSTANCE_SET_IMPLEMENTATION = 'ROOT_RELATIONAL_INSTANCE_SET_IMPLEMENTATION', RELATIONAL_INSTANCE_SET_IMPLEMENTATION = 'RELATIONAL_INSTANCE_SET_IMPLEMENTATION', REALTIONAL_PROPERTY_MAPPING = 'REALTIONAL_PROPERTY_MAPPING', EMBEDDED_REALTIONAL_PROPERTY_MAPPING = 'EMBEDDED_REALTIONAL_PROPERTY_MAPPING', INLINE_EMBEDDED_REALTIONAL_PROPERTY_MAPPING = 'INLINE_EMBEDDED_REALTIONAL_PROPERTY_MAPPING', OTHERWISE_EMBEDDED_REALTIONAL_PROPERTY_MAPPING = 'OTHERWISE_EMBEDDED_REALTIONAL_PROPERTY_MAPPING', RELATION_FUNCTION_INSTANCE_SET_IMPLEMENTATION = 'RELATION_FUNCTION_INSTANCE_SET_IMPLEMENTATION', RELATION_FUNCTION_PROPERTY_MAPPING = 'RELATION_FUNCTION_PROPERTY_MAPPING', // milestoning BUSINESS_MILESTONING = 'BUSINESS_MILESTONING', BUSINESS_SNAPSHOT_MILESTONING = 'BUSINESS_SNAPSHOT_MILESTONING', PROCESSING_MILESTONING = 'PROCESSING_MILESTONING', // relational database connection RELATIONAL_DATABASE_CONNECTION = 'RELATIONAL_DATABASE_CONNECTION', // relational database connection datasource specification STATIC_DATASOURCE_SPECIFICATION = 'STATIC_DATASOURCE_SPECIFICATION', LOCAL_H2_DATASOURCE_SPECIFICATION = 'LOCAL_H2_DATASOURCE_SPECIFICATION', EMBEDDED_H2_DATASOURCE_SPECIFICATION = 'EMBEDDED_H2_DATASOURCE_SPECIFICATION', SNOWFLAKE_DATASOURCE_SPECIFICATION = 'SNOWFLAKE_DATASOURCE_SPECIFICATION', REDSHIFT_DATASOURCE_SPECIFICATION = 'REDSHIFT_DATASOURCE_SPECIFICATION', BIGQUERY_DATASOURCE_SPECIFICATION = 'BIGQUERY_DATASOURCE_SPECIFICATION', DATABRICKS_DATASOURCE_SPECIFICATION = 'DATABRICKS_DATASOURCE_SPECIFICATION', SPANNER_DATASOURCE_SPECIFICATION = 'SPANNER_DATASOURCE_SPECIFICATION', TRINO_DATASOURCE_SPECIFICATION = 'TRINO_DATASOURCE_SPECIFICATION', DUCKDB_DATASOURCE_SPECIFICATION = 'DUCKDB_DATASOURCE_SPECIFICATION', TRINO_SSL_SPECIFICATION = 'TRINO_SSL_SPECIFICATION', // relational database connection authentication strategy DELEGRATED_KEREBEROS_AUTHENTICATION_STRATEGY = 'DELEGRATED_KEREBEROS_AUTHENTICATION_STRATEGY', DEFAULT_H2_AUTHENTICATION_STRATEGY = 'DEFAULT_H2_AUTHENTICATION_STRATEGY', TEST_AUTHENTICATION_STRATEGY = 'TEST_AUTHENTICATION_STRATEGY', SNOWFLAKE_PUBLIC_AUTHENTICATION_STRATEGY = 'SNOWFLAKE_PUBLIC_AUTHENTICATION_STRATEGY', API_TOKEN_AUTHENTICATION_STRATEGY = 'API_TOKEN_AUTHENTICATION_STRATEGY', GCP_APPLICATION_DEFAULT_CREDENTIALS_AUTHENTICATION_STRATEGY = 'GCP_APPLICATION_DEFAULT_CREDENTIALS_AUTHENTICATION_STRATEGY', USERNAME_PASSWORD_AUTHENTICATION_STRATEGY = 'USERNAME_PASSWORD_AUTHENTICATION_STRATEGY', OAUTH_AUTHENTICATION_STRATEGY = 'OAUTH_AUTHENTICATION_STRATEGY', GCP_WORKLOAD_IDENTITY_FEDERATION_AUTHENTICATION_STRATEGY = 'GCP_WORKLOAD_IDENTITY_FEDERATION_AUTHENTICATION_STRATEGY', MIDDLE_TIER_USERNAME_PASSWORD_AUTHENTICATION_STRATEGY = 'MIDDLE_TIER_USERNAME_PASSWORD_AUTHENTICATION_STRATEGY', TRINO_DELEGATED_KERBEROS_AUTHENTICATION_STRATEGY = 'TRINO_KEREBEROS_AUTHENTICATION_STRATEGY', // relational database connection post-processors MAPPER_POST_PROCESSOR = 'MAPPER_POST_PROCESSOR', SCHEMA_MAPPER = 'SCHEMA_MAPPER', TABLE_MAPPER = 'TABLE_MAPPER', // relational database connection query generation config GENERATION_FEATURES_CONFIG = 'GENERATION_FEATURES_CONFIG', // ---------------------------------- STO Flat-Data -------------------------------------- FLAT_DATA = 'FLAT_DATA', FLAT_DATA_SECTION = 'FLAT_DATA_SECTION', FLAT_DATA_PROPERTY = 'FLAT_DATA_PROPERTY', FLAT_DATA_ROOT_RECORD_TYPE = 'FLAT_DATA_ROOT_RECORD_TYPE', FLAT_DATA_RECORD_TYPE = 'FLAT_DATA_RECORD_TYPE', FLAT_DATA_RECORD_FIELD = 'FLAT_DATA_RECORD_FIELD', FLAT_DATA_STRING = 'FLAT_DATA_STRING', FLAT_DATA_BOOLEAN = 'FLAT_DATA_BOOLEAN', FLAT_DATA_NUMBER = 'FLAT_DATA_NUMBER', FLAT_DATA_INTEGER = 'FLAT_DATA_INTEGER', FLAT_DATA_FLOAT = 'FLAT_DATA_FLOAT', FLAT_DATA_DECIMAL = 'FLAT_DATA_DECIMAL', FLAT_DATA_DATE = 'FLAT_DATA_DATE', FLAT_DATA_DATE_TIME = 'FLAT_DATA_DATE_TIME', FLAT_DATA_STRICT_DATE = 'FLAT_DATA_STRICT_DATE', FLAT_DATA_INSTANCE_SET_IMPLEMENTATION = 'FLAT_DATA_INSTANCE_SET_IMPLEMENTATION', FLAT_DATA_PROPERTY_MAPPING = 'FLAT_DATA_PROPERTY_MAPPING', FLAT_DATA_ASSOCIATION_IMPLEMENTATION = 'FLAT_DATA_ASSOCIATION_IMPLEMENTATION', FLAT_DATA_ASSOCIATION_PROPERTY_MAPPING = 'FLAT_DATA_ASSOCIATION_PROPERTY_MAPPING', EMBEDDED_FLAT_DATA_PROPERTY_MAPPING = 'EMBEDDED_FLAT_DATA_PROPERTY_MAPPING', FLAT_DATA_SECTION_POINTER = 'FLAT_DATA_SECTION_POINTER', // -------------------------------------- Function Activator -------------------------------------- SNOWFLAKE_APP = 'SNOWFLAKE_APP', HOSTED_SERVICE = 'HOSTED_SERVICE', HOSTED_SERVICE_OWNER = 'HOSTED_SERVICE_OWNER', // ---------------------------------- Relation -------------------------------------- RELATION_TYPE = 'RELATION_TYPE', RELATION_COLUMN = 'RELATION_COLUMN', // ---------------------------------- Data Product -------------------------------------- DATA_PRODUCT = 'DATA_PRODUCT', DATA_PRODUCT_ACCESS_POINT_GROUP = 'DATA_PRODUCT_ACCESS_POINT_GROUP', DATA_PRODUCT_ACCESS_POINT = 'DATA_PRODUCT_ACCESS_POINT', LAKEHOUSE_ACCESS_POINT = 'LAKEHOUSE_ACCESS_POINT', UNKNOWN_ACCESS_POINT = 'UNKNOWN_ACCESS_POINT', } export const hashObjectWithoutSourceInformation = (val: object): string => hashObject(val, { /** * NOTE: this is over-simplification as there could be source information fields with other names * see note in {@link pruneSourceInformation} */ excludeKeys: (propKey: string) => propKey .toLowerCase() .endsWith(SOURCE_INFORMATION_PROPERTY_KEY_SUFFIX.toLowerCase()), }); export const hashRawLambda = ( parameters: object | undefined, body: object | undefined, ): string => hashArray([ parameters ? hashObjectWithoutSourceInformation(parameters) : '', body ? hashObjectWithoutSourceInformation(body) : '', ]); export const hashElementPointer = ( pointerType: string | undefined, path: string, ): string => [CORE_HASH_STRUCTURE.PACKAGEABLE_ELEMENT_POINTER, pointerType ?? '', path] .map(hashValue) .join(',');