UNPKG

graphql

Version:

A Query Language and Runtime which can target any service.

1 lines 3.27 kB
{"version":3,"file":"valueFromASTUntyped.js","sourceRoot":"","sources":["../../src/utilities/valueFromASTUntyped.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,iCAAgC;AAKpD,OAAO,EAAE,IAAI,EAAE,8BAA6B;AA8B5C,MAAM,UAAU,mBAAmB,CACjC,SAAoB,EACpB,SAAkC;IAElC,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,IAAI;YACZ,OAAO,IAAI,CAAC;QACd,KAAK,IAAI,CAAC,GAAG;YACX,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvC,KAAK,IAAI,CAAC,KAAK;YACb,OAAO,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,MAAM,CAAC;QACjB,KAAK,IAAI,CAAC,IAAI,CAAC;QACf,KAAK,IAAI,CAAC,OAAO;YACf,OAAO,SAAS,CAAC,KAAK,CAAC;QACzB,KAAK,IAAI,CAAC,IAAI;YACZ,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACnC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CACrC,CAAC;QACJ,KAAK,IAAI,CAAC,MAAM;YACd,OAAO,SAAS,CACd,SAAS,CAAC,MAAM,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAC3B,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CACvD,CAAC;QACJ,KAAK,IAAI,CAAC,QAAQ;YAChB,OAAO,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC","sourcesContent":["/** @category Values */\n\nimport { keyValMap } from '../jsutils/keyValMap.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\nimport type { ObjMap } from '../jsutils/ObjMap.ts';\n\nimport type { ValueNode } from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * Because no GraphQL type is provided, the returned JavaScript value reflects\n * the provided GraphQL value AST.\n *\n * | GraphQL Value | JavaScript Value |\n * | -------------------- | ---------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String / Enum | String |\n * | Int / Float | Number |\n * | Null | null |\n * @param valueNode - GraphQL value AST node to convert.\n * @param variables - Optional runtime variable values keyed by variable name.\n * @returns JavaScript value represented by the GraphQL value AST.\n * @example\n * ```ts\n * import { parseValue } from 'graphql/language';\n * import { valueFromASTUntyped } from 'graphql/utilities';\n *\n * const value = valueFromASTUntyped(parseValue('[1, 2, 3]'));\n *\n * value; // => [1, 2, 3]\n * valueFromASTUntyped(parseValue('$name'), { name: 'Ada' }); // => 'Ada'\n * ```\n */\nexport function valueFromASTUntyped(\n valueNode: ValueNode,\n variables?: Maybe<ObjMap<unknown>>,\n): unknown {\n switch (valueNode.kind) {\n case Kind.NULL:\n return null;\n case Kind.INT:\n return parseInt(valueNode.value, 10);\n case Kind.FLOAT:\n return parseFloat(valueNode.value);\n case Kind.STRING:\n case Kind.ENUM:\n case Kind.BOOLEAN:\n return valueNode.value;\n case Kind.LIST:\n return valueNode.values.map((node) =>\n valueFromASTUntyped(node, variables),\n );\n case Kind.OBJECT:\n return keyValMap(\n valueNode.fields,\n (field) => field.name.value,\n (field) => valueFromASTUntyped(field.value, variables),\n );\n case Kind.VARIABLE:\n return variables?.[valueNode.name.value];\n }\n}\n"]}