@aws-amplify/graphql-transformer-core
Version:
A framework to transform from GraphQL SDL to AWS CloudFormation.
63 lines • 4.57 kB
JavaScript
;
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