UNPKG

@cran/gql.core

Version:

Cran/GraphQL Core Utilities

41 lines (40 loc) 1.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseLiteral = exports.parseObject = exports.parseError = void 0; const kinds_1 = require("graphql/language/kinds"); const ast_1 = require("graphql/language/ast"); const printer_1 = require("graphql/language/printer"); function parseError(type, ast, reason = "input syntax") { throw new TypeError(`invalid ${reason} for type ${type}: ${(0, ast_1.isNode)(ast) ? (0, printer_1.print)(ast) : ast}`); } exports.parseError = parseError; function parseObject(type, ast, variables) { const value = Object.create(null); for (const field of ast.fields) { value[field.name.value] = parseLiteral(type, field.value, variables); } return value; } exports.parseObject = parseObject; function parseLiteral(type, ast, variables) { switch (ast.kind) { case kinds_1.Kind.STRING: case kinds_1.Kind.BOOLEAN: case kinds_1.Kind.INT: case kinds_1.Kind.FLOAT: return ast.value; case kinds_1.Kind.OBJECT: return parseObject(type, ast, variables); case kinds_1.Kind.LIST: return ast.values.map(function mapValue(value) { return parseLiteral(type, value, variables); }); case kinds_1.Kind.NULL: return null; case kinds_1.Kind.VARIABLE: return variables?.[ast.name.value]; default: parseError(type, ast); } } exports.parseLiteral = parseLiteral;