UNPKG

2.29 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const types_1 = require("@babel/types");
4const types_2 = require("./types");
5const intermediates_1 = require("./intermediates");
6const genericTypes_1 = require("./genericTypes");
7const compact_1 = require("./compact");
8const objectPropertyForGraphQLInputField = (field) => types_1.objectProperty(types_1.identifier(field.name), types_1.identifier(field.name), false, true);
9const identifierForGraphQLInputField = (field) => exports.typedIdentifier(field.name, types_2.typeForInputType(intermediates_1.InputType(field.type)));
10exports.typedIdentifier = (name, type) => (Object.assign({}, types_1.identifier(name), { typeAnnotation: types_1.TSTypeAnnotation(type) }));
11const identifierForVariable = (variable) => exports.typedIdentifier(variable.name, types_2.typeForInputType(intermediates_1.InputType(variable.type)));
12const objectPropertiesForOperation = (operation) => compact_1.default(types_1.objectProperty(types_1.identifier("query"), types_2.stringIdentifier(operation.operationName)), operation.variables.length > 0 &&
13 types_1.objectProperty(types_1.identifier("variables"), types_1.objectExpression(operation.variables.map(variable => types_1.objectProperty(types_1.identifier(variable.name), types_1.identifier(variable.name), false, true)))));
14const constructorDeclaration = (name, parameters, returnType, properties) => types_1.variableDeclaration("const", [
15 types_1.variableDeclarator(types_1.identifier(name), Object.assign({}, types_1.arrowFunctionExpression(parameters, types_1.parenthesizedExpression(types_1.objectExpression(properties))), { returnType: types_1.TSTypeAnnotation(returnType) }))
16]);
17exports.constructorDeclarationForGraphQLInputObjectType = (type) => ((fields) => constructorDeclaration(type.name, fields.map(identifierForGraphQLInputField), types_2.typeReference(type.name), fields.map(objectPropertyForGraphQLInputField)))(Object.values(type.getFields()));
18exports.constructorDeclarationForOperation = (operation) => constructorDeclaration(operation.operationName, operation.variables.map(identifierForVariable), genericTypes_1.OperationType(types_2.typeReference(operation.operationName)), objectPropertiesForOperation(operation));
19//# sourceMappingURL=constructors.js.map
\No newline at end of file