UNPKG

@aws-amplify/graphql-transformer-core

Version:

A framework to transform from GraphQL SDL to AWS CloudFormation.

63 lines 4.57 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.constructAuthFilterStatement = exports.constructFieldMappingInput = exports.constructArrayFieldsStatement = exports.constructNonScalarFieldsStatement = exports.getArrayFields = exports.getNonScalarFields = exports.getParameterStoreSecretPath = void 0; const path_1 = __importDefault(require("path")); const lodash_1 = __importDefault(require("lodash")); const graphql_1 = require("graphql"); const graphql_mapping_template_1 = require("graphql-mapping-template"); const graphql_transformer_common_1 = require("graphql-transformer-common"); const api_category_1 = require("./api-category"); const getParameterNameForDBSecret = (secret, secretsKey) => { return `${secretsKey}_${secret}`; }; const getParameterStoreSecretPath = (secret, secretsKey, apiName, environmentName, appId) => { if (lodash_1.default.isEmpty(appId)) { throw new Error('Unable to read the App ID'); } const categoryName = api_category_1.APICategory; const paramName = getParameterNameForDBSecret(secret, secretsKey); if (!environmentName) { throw new Error('Unable to create RDS secret path, environment not found/defined'); } return path_1.default.posix.join('/amplify', appId, environmentName, `AMPLIFY_${categoryName}${apiName}${paramName}`); }; exports.getParameterStoreSecretPath = getParameterStoreSecretPath; const getNonScalarFields = (object, ctx) => { var _a; if (!object) { return []; } const enums = ctx.output.getTypeDefinitionsOfKind(graphql_1.Kind.ENUM_TYPE_DEFINITION); return ((_a = object.fields) === null || _a === void 0 ? void 0 : _a.filter((f) => (0, graphql_transformer_common_1.isArrayOrObject)(f.type, enums)).map((f) => f.name.value)) || []; }; exports.getNonScalarFields = getNonScalarFields; const getArrayFields = (object, ctx) => { var _a; if (!object) { return []; } return ((_a = object.fields) === null || _a === void 0 ? void 0 : _a.filter((f) => (0, graphql_transformer_common_1.isListType)(f.type)).map((f) => f.name.value)) || []; }; exports.getArrayFields = getArrayFields; const constructNonScalarFieldsStatement = (tableName, ctx) => (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.args.metadata.nonScalarFields'), (0, graphql_mapping_template_1.list)((0, exports.getNonScalarFields)(ctx.output.getObject(tableName), ctx).map(graphql_mapping_template_1.str))); exports.constructNonScalarFieldsStatement = constructNonScalarFieldsStatement; const constructArrayFieldsStatement = (tableName, ctx) => (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.args.metadata.arrayFields'), (0, graphql_mapping_template_1.list)((0, exports.getArrayFields)(ctx.output.getObject(tableName), ctx).map(graphql_mapping_template_1.str))); exports.constructArrayFieldsStatement = constructArrayFieldsStatement; const constructFieldMappingInput = () => { return (0, graphql_mapping_template_1.compoundExpression)([ (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)('lambdaInput.args.metadata.fieldMap'), (0, graphql_mapping_template_1.obj)({})), (0, graphql_mapping_template_1.qref)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('lambdaInput.args.metadata.fieldMap.putAll'), (0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.defaultIfNull'), (0, graphql_mapping_template_1.ref)('context.stash.fieldMap'), (0, graphql_mapping_template_1.obj)({})))), ]); }; exports.constructFieldMappingInput = constructFieldMappingInput; const constructAuthFilterStatement = (keyName, emptyAuthFilter = false) => { if (emptyAuthFilter) { return (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)(keyName), (0, graphql_mapping_template_1.obj)({})); } return (0, graphql_mapping_template_1.iff)((0, graphql_mapping_template_1.not)((0, graphql_mapping_template_1.methodCall)((0, graphql_mapping_template_1.ref)('util.isNullOrEmpty'), (0, graphql_mapping_template_1.ref)('ctx.stash.authFilter'))), (0, graphql_mapping_template_1.set)((0, graphql_mapping_template_1.ref)(keyName), (0, graphql_mapping_template_1.ref)('ctx.stash.authFilter'))); }; exports.constructAuthFilterStatement = constructAuthFilterStatement; //# sourceMappingURL=rds-util.js.map