UNPKG

@csermet/multiprovider

Version:

cloud-graph provider plugin for AWS used to fetch AWS cloud data.

154 lines (153 loc) 7.78 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const sdk_1 = require("@cloudgraph/sdk"); const translations_1 = __importDefault(require("../../properties/translations")); const format_1 = require("../../utils/format"); /** * AppSync */ const formatApiKey = ({ id, description, expires, }) => { return { id, description, expires, }; }; const formatDataSource = ({ dataSourceArn: id, name, description, type, serviceRoleArn, dynamodbConfig, lambdaConfig, elasticsearchConfig, httpConfig, relationalDatabaseConfig, }) => { return { id, arn: id, name, description, type, serviceRoleArn, dynamodbTableName: dynamodbConfig?.tableName || '', dynamodbAwsRegion: dynamodbConfig?.awsRegion || '', dynamodbUseCallerCredentials: dynamodbConfig?.useCallerCredentials ? translations_1.default.yes : translations_1.default.no, dynamodbDeltaSyncBaseTableTTL: dynamodbConfig?.deltaSyncConfig?.baseTableTTL || 0, dynamodbDeltaSyncTableName: dynamodbConfig?.deltaSyncConfig?.deltaSyncTableName || '', dynamodbDeltaSyncTableTTL: dynamodbConfig?.deltaSyncConfig?.deltaSyncTableTTL || 0, dynamodbVersioned: dynamodbConfig?.versioned ? translations_1.default.yes : translations_1.default.no, lambdaFunctionArn: lambdaConfig?.lambdaFunctionArn || '', elasticsearchEndpoint: elasticsearchConfig?.endpoint || '', elasticsearchAwsRegion: elasticsearchConfig?.awsRegion || '', httpEndpoint: httpConfig?.endpoint || '', httpAuthorizationType: httpConfig?.authorizationConfig?.authorizationType || '', httpAuthorizationIamSigningRegion: httpConfig?.authorizationConfig?.awsIamConfig?.signingRegion || '', httpAuthorizationIamSigningServiceName: httpConfig?.authorizationConfig?.awsIamConfig?.signingServiceName || '', relationalDatabaseSourceType: relationalDatabaseConfig?.relationalDatabaseSourceType || '', relationalDatabaseAwsRegion: relationalDatabaseConfig?.rdsHttpEndpointConfig?.awsRegion || '', relationalDatabaseClusterIdentifier: relationalDatabaseConfig?.rdsHttpEndpointConfig?.dbClusterIdentifier || '', relationalDatabaseName: relationalDatabaseConfig?.rdsHttpEndpointConfig?.databaseName || '', relationalDatabaseSchema: relationalDatabaseConfig?.rdsHttpEndpointConfig?.schema || '', relationalDatabaseAwsSecretStoreArn: relationalDatabaseConfig?.rdsHttpEndpointConfig?.awsSecretStoreArn || '', }; }; const formatResolver = ({ resolverArn, typeName, fieldName, dataSourceName, requestMappingTemplate, responseMappingTemplate, kind, pipelineConfig, syncConfig, cachingConfig, }) => { return { id: resolverArn, arn: resolverArn, typeName, fieldName, dataSourceName, requestMappingTemplate, responseMappingTemplate, kind, pipelineFunctionIds: pipelineConfig?.functions || [], syncConflictHandler: syncConfig?.conflictHandler || '', syncConflictDetection: syncConfig?.conflictDetection || '', syncLambdaConflictHandlerArn: syncConfig?.lambdaConflictHandlerConfig?.lambdaConflictHandlerArn || '', cachingTTL: cachingConfig?.ttl || 0, cachingKeys: cachingConfig?.cachingKeys || [], }; }; const formatFunction = ({ functionId: id, functionArn: arn, name, description, dataSourceName, requestMappingTemplate, responseMappingTemplate, functionVersion, resolvers, }) => { return { id, arn, name, description, dataSourceName, requestMappingTemplate, responseMappingTemplate, functionVersion, resolvers: resolvers?.map(resolver => formatResolver(resolver)) || [], }; }; const formatType = ({ arn, name, description, definition, format, resolvers, }) => { return { id: arn, arn, name, description, definition, format, resolvers: resolvers?.map(resolver => formatResolver(resolver)) || [], }; }; exports.default = ({ service: rawData, account, region, }) => { const { name, apiId: id, authenticationType, logConfig, userPoolConfig, openIDConnectConfig, arn, uris, Tags = {}, additionalAuthenticationProviders, xrayEnabled, wafWebAclArn, lambdaAuthorizerConfig, awsApiKeys, awsDataSources, awsFunctions, awsTypes, } = rawData; const additionalAuthenticationProviderList = additionalAuthenticationProviders?.map(({ authenticationType: additionalAuthenticationType, openIDConnectConfig: additionalOpenIDConnectConfig, userPoolConfig: additionalUserPoolConfig, }) => { return { id: sdk_1.generateUniqueId({ arn, additionalAuthenticationType, additionalOpenIDConnectConfig, additionalUserPoolConfig, }), authenticationType: additionalAuthenticationType || '', openIDConnectIssuer: additionalOpenIDConnectConfig?.issuer || '', openIDConnectClientId: additionalOpenIDConnectConfig?.clientId || '', openIDConnectIatTTL: additionalOpenIDConnectConfig?.iatTTL || 0, openIDConnectAuthTTL: additionalOpenIDConnectConfig?.authTTL || 0, userPoolId: additionalUserPoolConfig?.userPoolId || '', userPoolAwsRegion: additionalUserPoolConfig?.awsRegion || '', userPoolAppIdClientRegex: additionalUserPoolConfig?.appIdClientRegex || '', }; }) || []; const formatUrisData = () => { const result = []; for (const [key, value] of Object.entries(uris)) { result.push({ id: `${key}:${value}`, key, value }); } return result; }; const appSync = { id, accountId: account, arn, name, authenticationType, logFieldLogLevel: logConfig?.fieldLogLevel || '', logCloudWatchLogsRoleArn: logConfig?.cloudWatchLogsRoleArn || '', logExcludeVerboseContent: logConfig?.excludeVerboseContent ? translations_1.default.yes : translations_1.default.no, userPoolId: userPoolConfig?.userPoolId || '', userPoolAwsRegion: userPoolConfig?.awsRegion || '', userPoolDefaultAction: userPoolConfig?.defaultAction || '', userPoolAppIdClientRegex: userPoolConfig?.appIdClientRegex || '', openIDConnectIssuer: openIDConnectConfig?.issuer || '', openIDConnectClientId: openIDConnectConfig?.clientId || '', openIDConnectIatTTL: openIDConnectConfig?.iatTTL || 0, openIDConnectAuthTTL: openIDConnectConfig?.authTTL || 0, uris: formatUrisData(), tags: format_1.formatTagsFromMap(Tags), additionalAuthenticationProviders: additionalAuthenticationProviderList, xrayEnabled: xrayEnabled ? translations_1.default.yes : translations_1.default.no, wafWebAclArn, lambdaAuthorizerResultTtlInSeconds: lambdaAuthorizerConfig?.authorizerResultTtlInSeconds || 0, lambdaAuthorizerUri: lambdaAuthorizerConfig?.authorizerUri || '', lambdaAuthorizerIdentityValidationExpression: lambdaAuthorizerConfig?.identityValidationExpression || '', region, apiKeys: awsApiKeys?.map(apiKey => formatApiKey(apiKey)) || [], dataSources: awsDataSources?.map(dataSource => formatDataSource(dataSource)) || [], functions: awsFunctions?.map(functionData => formatFunction(functionData)) || [], types: awsTypes?.map(typeData => formatType(typeData)) || [], }; return appSync; };