UNPKG

2.67 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.valueFromASTUntyped = valueFromASTUntyped;
7
8var _keyValMap = require('../jsutils/keyValMap');
9
10var _keyValMap2 = _interopRequireDefault(_keyValMap);
11
12var _isInvalid = require('../jsutils/isInvalid');
13
14var _isInvalid2 = _interopRequireDefault(_isInvalid);
15
16var _kinds = require('../language/kinds');
17
18var Kind = _interopRequireWildcard(_kinds);
19
20function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
21
22function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
24/**
25 * Produces a JavaScript value given a GraphQL Value AST.
26 *
27 * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value
28 * will reflect the provided GraphQL value AST.
29 *
30 * | GraphQL Value | JavaScript Value |
31 * | -------------------- | ---------------- |
32 * | Input Object | Object |
33 * | List | Array |
34 * | Boolean | Boolean |
35 * | String / Enum | String |
36 * | Int / Float | Number |
37 * | Null | null |
38 *
39 */
40function valueFromASTUntyped(valueNode, variables) {
41 switch (valueNode.kind) {
42 case Kind.NULL:
43 return null;
44 case Kind.INT:
45 return parseInt(valueNode.value, 10);
46 case Kind.FLOAT:
47 return parseFloat(valueNode.value);
48 case Kind.STRING:
49 case Kind.ENUM:
50 case Kind.BOOLEAN:
51 return valueNode.value;
52 case Kind.LIST:
53 return valueNode.values.map(function (node) {
54 return valueFromASTUntyped(node, variables);
55 });
56 case Kind.OBJECT:
57 return (0, _keyValMap2.default)(valueNode.fields, function (field) {
58 return field.name.value;
59 }, function (field) {
60 return valueFromASTUntyped(field.value, variables);
61 });
62 case Kind.VARIABLE:
63 var variableName = valueNode.name.value;
64 return variables && !(0, _isInvalid2.default)(variables[variableName]) ? variables[variableName] : undefined;
65 }
66 /* istanbul ignore next */
67 throw new Error('Unexpected value kind: ' + valueNode.kind);
68}
69/**
70 * Copyright (c) 2017, Facebook, Inc.
71 * All rights reserved.
72 *
73 * This source code is licensed under the BSD-style license found in the
74 * LICENSE file in the root directory of this source tree. An additional grant
75 * of patent rights can be found in the PATENTS file in the same directory.
76 */
\No newline at end of file