| 'use strict'; |
|
|
| Object.defineProperty(exports, '__esModule', { |
| value: true, |
| }); |
| exports.valueFromASTUntyped = valueFromASTUntyped; |
|
|
| var _keyValMap = require('../jsutils/keyValMap.js'); |
|
|
| var _kinds = require('../language/kinds.js'); |
|
|
| /** |
| * Produces a JavaScript value given a GraphQL Value AST. |
| * |
| * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value |
| * will reflect the provided GraphQL value AST. |
| * |
| * | GraphQL Value | JavaScript Value | |
| * | -------------------- | ---------------- | |
| * | Input Object | Object | |
| * | List | Array | |
| * | Boolean | Boolean | |
| * | String / Enum | String | |
| * | Int / Float | Number | |
| * | Null | null | |
| * |
| */ |
| function valueFromASTUntyped(valueNode, variables) { |
| switch (valueNode.kind) { |
| case _kinds.Kind.NULL: |
| return null; |
|
|
| case _kinds.Kind.INT: |
| return parseInt(valueNode.value, 10); |
|
|
| case _kinds.Kind.FLOAT: |
| return parseFloat(valueNode.value); |
|
|
| case _kinds.Kind.STRING: |
| case _kinds.Kind.ENUM: |
| case _kinds.Kind.BOOLEAN: |
| return valueNode.value; |
|
|
| case _kinds.Kind.LIST: |
| return valueNode.values.map((node) => |
| valueFromASTUntyped(node, variables), |
| ); |
|
|
| case _kinds.Kind.OBJECT: |
| return (0, _keyValMap.keyValMap)( |
| valueNode.fields, |
| (field) => field.name.value, |
| (field) => valueFromASTUntyped(field.value, variables), |
| ); |
|
|
| case _kinds.Kind.VARIABLE: |
| return variables === null || variables === void 0 |
| ? void 0 |
| : variables[valueNode.name.value]; |
| } |
| } |