UNPKG

@aws-amplify/graphql-transformer-core

Version:

A framework to transform from GraphQL SDL to AWS CloudFormation.

70 lines 2.86 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.needsDeepMerge = exports.generateGetArgumentsInput = exports.DirectiveWrapper = exports.ArgumentWrapper = void 0; const graphql_1 = require("graphql"); const lodash_1 = __importDefault(require("lodash")); class ArgumentWrapper { constructor(argument) { this.serialize = () => { return { kind: 'Argument', name: this.name, value: this.value, }; }; this.name = argument.name; this.value = argument.value; } } exports.ArgumentWrapper = ArgumentWrapper; class DirectiveWrapper { constructor(node) { var _a; this.arguments = []; this.serialize = () => { return { kind: 'Directive', name: this.name, arguments: this.arguments.map((arg) => arg.serialize()), }; }; this.getArguments = (defaultValue, options) => { const argValues = this.arguments.reduce((acc, arg) => ({ ...acc, [arg.name.value]: (0, graphql_1.valueFromASTUntyped)(arg.value), }), {}); if ((options === null || options === void 0 ? void 0 : options.deepMergeArguments) && (0, exports.needsDeepMerge)(defaultValue, argValues)) { return lodash_1.default.merge(lodash_1.default.cloneDeepWith(defaultValue, (value) => { if (value instanceof graphql_1.Location) { return value; } return undefined; }), argValues); } return Object.assign(defaultValue, argValues); }; this.name = node.name; this.arguments = ((_a = node.arguments) !== null && _a !== void 0 ? _a : []).map((arg) => new ArgumentWrapper(arg)); this.location = this.location; } } exports.DirectiveWrapper = DirectiveWrapper; const generateGetArgumentsInput = ({ shouldDeepMergeDirectiveConfigDefaults }) => ({ deepMergeArguments: shouldDeepMergeDirectiveConfigDefaults, }); exports.generateGetArgumentsInput = generateGetArgumentsInput; const needsDeepMerge = (defaultValue, argValues) => { var _a; if (lodash_1.default.isEmpty(argValues)) { return false; } if (typeof defaultValue === 'object') { return (_a = Object.keys(argValues)) === null || _a === void 0 ? void 0 : _a.some((key) => { var _a; return (_a = Object.keys(defaultValue)) === null || _a === void 0 ? void 0 : _a.includes(key); }); } return true; }; exports.needsDeepMerge = needsDeepMerge; //# sourceMappingURL=directive-wrapper.js.map