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