UNPKG

2.18 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.valueFromASTUntyped = valueFromASTUntyped;
7
8var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
9
10var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
11
12var _keyValMap = _interopRequireDefault(require("../jsutils/keyValMap.js"));
13
14var _kinds = require("../language/kinds.js");
15
16function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
18/**
19 * Produces a JavaScript value given a GraphQL Value AST.
20 *
21 * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value
22 * will reflect the provided GraphQL value AST.
23 *
24 * | GraphQL Value | JavaScript Value |
25 * | -------------------- | ---------------- |
26 * | Input Object | Object |
27 * | List | Array |
28 * | Boolean | Boolean |
29 * | String / Enum | String |
30 * | Int / Float | Number |
31 * | Null | null |
32 *
33 */
34function valueFromASTUntyped(valueNode, variables) {
35 switch (valueNode.kind) {
36 case _kinds.Kind.NULL:
37 return null;
38
39 case _kinds.Kind.INT:
40 return parseInt(valueNode.value, 10);
41
42 case _kinds.Kind.FLOAT:
43 return parseFloat(valueNode.value);
44
45 case _kinds.Kind.STRING:
46 case _kinds.Kind.ENUM:
47 case _kinds.Kind.BOOLEAN:
48 return valueNode.value;
49
50 case _kinds.Kind.LIST:
51 return valueNode.values.map(function (node) {
52 return valueFromASTUntyped(node, variables);
53 });
54
55 case _kinds.Kind.OBJECT:
56 return (0, _keyValMap.default)(valueNode.fields, function (field) {
57 return field.name.value;
58 }, function (field) {
59 return valueFromASTUntyped(field.value, variables);
60 });
61
62 case _kinds.Kind.VARIABLE:
63 return variables === null || variables === void 0 ? void 0 : variables[valueNode.name.value];
64 } // istanbul ignore next (Not reachable. All possible value nodes have been considered)
65
66
67 false || (0, _invariant.default)(0, 'Unexpected value node: ' + (0, _inspect.default)(valueNode));
68}