{"componentChunkName":"component---src-templates-modal-page-js","path":"/absinthe","result":{"pageContext":{"node":{"slug":{"current":"absinthe"},"name":"Absinthe","githubUrl":"https://github.com/absinthe-graphql/absinthe","description":"Fully Featured Elixir GraphQL Library.","developer":null,"price":"Free","url":"http://absinthe-graphql.org/","tags":[{"id":"680af717-b47c-5f40-9da8-5396eaff7a0a","name":"Elixir","slug":{"current":"elixir"}}],"logo":{"asset":{"url":"https://cdn.sanity.io/images/g5bd2nk6/production/09cfd9148681a995f5bb2e1bf02e45b1873720c6-64x64.png"}},"categories":[{"name":"Utilities","slug":{"current":"utilities"}}],"_rawContent":[{"_key":"a80d76c408a6","_type":"block","children":[{"_key":"a80d76c408a60","_type":"span","marks":[],"text":"Why Use Absinthe?"}],"markDefs":[],"style":"h2"},{"_key":"756c77311139","_type":"block","children":[{"_key":"756c773111390","_type":"span","marks":[],"text":"Absinthe goes far beyond GraphQL specification basics."}],"markDefs":[],"style":"normal"},{"_key":"edcfa69d7989","_type":"block","children":[{"_key":"edcfa69d79890","_type":"span","marks":[],"text":"Easy-to-Read, Fast-to-Run Schemas"}],"markDefs":[],"style":"h3"},{"_key":"bf14aa9c7f14","_type":"block","children":[{"_key":"bf14aa9c7f140","_type":"span","marks":[],"text":"Absinthe schemas are defined using easy-to-read macros that build and verify their structure at compile-time, preventing runtime errors and increasing performance."}],"markDefs":[],"style":"normal"},{"_key":"d6bbf1fa6b90","_type":"block","children":[{"_key":"d6bbf1fa6b900","_type":"span","marks":[],"text":"Pluggability"}],"markDefs":[],"style":"h3"},{"_key":"fc05f4d3f8a2","_type":"block","children":[{"_key":"fc05f4d3f8a20","_type":"span","marks":[],"text":"The entire query processing pipeline is configurable. Add, swap out, or remove the parser, individual validations, or resolution logic at will, even on a per-document basis."}],"markDefs":[],"style":"normal"},{"_key":"0bba8682ef32","_type":"block","children":[{"_key":"0bba8682ef320","_type":"span","marks":[],"text":"Advanced Resolution"}],"markDefs":[],"style":"h3"},{"_key":"ef5a9549c6c1","_type":"block","children":[{"_key":"ef5a9549c6c10","_type":"span","marks":[],"text":"Absinthe includes a number of advanced resolution features, to include:"}],"markDefs":[],"style":"normal"},{"_key":"4ba3b16fcff3","_type":"block","children":[{"_key":"4ba3b16fcff30","_type":"span","marks":[],"text":"Asynchronous field resolution"}],"level":1,"listItem":"bullet","markDefs":[],"style":"normal"},{"_key":"b54b5fff8696","_type":"block","children":[{"_key":"b54b5fff86960","_type":"span","marks":[],"text":"Batched field resolution (addressing N+1 query problems)"}],"level":1,"listItem":"bullet","markDefs":[],"style":"normal"},{"_key":"106bb8aee6e3","_type":"block","children":[{"_key":"106bb8aee6e30","_type":"span","marks":[],"text":"A resolution plugin system supporting further extensibility"}],"level":1,"listItem":"bullet","markDefs":[],"style":"normal"},{"_key":"21e7ea2c8f5d","_type":"block","children":[{"_key":"21e7ea2c8f5d0","_type":"span","marks":[],"text":"Safety"}],"markDefs":[],"style":"h3"},{"_key":"11aa7094ea2f","_type":"block","children":[{"_key":"11aa7094ea2f0","_type":"span","marks":[],"text":"Complexity analysis and configurable limiting"}],"level":1,"listItem":"bullet","markDefs":[],"style":"normal"},{"_key":"abbf77b8ee9e","_type":"block","children":[{"_key":"abbf77b8ee9e0","_type":"span","marks":[],"text":"Support for precompiled documents/preventing custom documents"}],"level":1,"listItem":"bullet","markDefs":[],"style":"normal"},{"_key":"dc014c01086c","_type":"block","children":[{"_key":"dc014c01086c0","_type":"span","marks":[],"text":"Idiomatic Documents, Idiomatic Code"}],"markDefs":[],"style":"h3"},{"_key":"88c1d1a69142","_type":"block","children":[{"_key":"88c1d1a691420","_type":"span","marks":[],"text":"Write your schemas in idiomatic Elixir snake_case notation. Absinthe can transparently translate to camelCase notation for your API clients."}],"markDefs":[],"style":"normal"},{"_key":"7fe564139f88","_type":"block","children":[{"_key":"7fe564139f880","_type":"span","marks":[],"text":"Or, define your own translation schema by writing a simple adapter."}],"markDefs":[],"style":"normal"},{"_key":"1320b790c71f","_type":"block","children":[{"_key":"1320b790c71f0","_type":"span","marks":[],"text":"Frontend Support"}],"markDefs":[],"style":"h3"},{"_key":"2fa04f2622c5","_type":"block","children":[{"_key":"2fa04f2622c50","_type":"span","marks":[],"text":"We care about support for third-party frameworks, both on the back and front end."}],"markDefs":[],"style":"normal"},{"_key":"826c7b93acde","_type":"block","children":[{"_key":"826c7b93acde0","_type":"span","marks":[],"text":"So far, we include specialized support for Phoenix and Plug on the backend, and Relay on the frontend."}],"markDefs":[],"style":"normal"},{"_key":"d47aebf40810","_type":"block","children":[{"_key":"d47aebf408100","_type":"span","marks":[],"text":"Of course we work out of the box with other frontend frameworks and GraphQL clients, too."}],"markDefs":[],"style":"normal"},{"_key":"63180e0d9c43","_type":"block","children":[{"_key":"63180e0d9c430","_type":"span","marks":[],"text":"An Active Community"}],"markDefs":[],"style":"h3"},{"_key":"6b4f42074335","_type":"block","children":[{"_key":"6b4f420743350","_type":"span","marks":[],"text":"The project is under constant improvement by a growing list of contributors, and your feedback is important. Please join us in Slack (#absinthe-graphql under the Elixir Slack account) or the Elixir Forum (tagged absinthe)."}],"markDefs":[],"style":"normal"},{"_key":"42039e6e3438","_type":"block","children":[{"_key":"42039e6e34380","_type":"span","marks":[],"text":"Please remember that all interactions in our official spaces follow our Code of Conduct."}],"markDefs":[],"style":"normal"}]},"targetPath":"","modalType":"tool"}},"staticQueryHashes":[]}