@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
154 lines (153 loc) • 7.78 kB
JavaScript
;
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;
};