UNPKG

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