1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const types_1 = require("@babel/types");
|
4 | const types_2 = require("./types");
|
5 | const intermediates_1 = require("./intermediates");
|
6 | const genericTypes_1 = require("./genericTypes");
|
7 | const compact_1 = require("./compact");
|
8 | const objectPropertyForGraphQLInputField = (field) => types_1.objectProperty(types_1.identifier(field.name), types_1.identifier(field.name), false, true);
|
9 | const identifierForGraphQLInputField = (field) => exports.typedIdentifier(field.name, types_2.typeForInputType(intermediates_1.InputType(field.type)));
|
10 | exports.typedIdentifier = (name, type) => (Object.assign({}, types_1.identifier(name), { typeAnnotation: types_1.TSTypeAnnotation(type) }));
|
11 | const identifierForVariable = (variable) => exports.typedIdentifier(variable.name, types_2.typeForInputType(intermediates_1.InputType(variable.type)));
|
12 | const 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)))));
|
14 | const 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 | ]);
|
17 | exports.constructorDeclarationForGraphQLInputObjectType = (type) => ((fields) => constructorDeclaration(type.name, fields.map(identifierForGraphQLInputField), types_2.typeReference(type.name), fields.map(objectPropertyForGraphQLInputField)))(Object.values(type.getFields()));
|
18 | exports.constructorDeclarationForOperation = (operation) => constructorDeclaration(operation.operationName, operation.variables.map(identifierForVariable), genericTypes_1.OperationType(types_2.typeReference(operation.operationName)), objectPropertiesForOperation(operation));
|
19 |
|
\ | No newline at end of file |