It is common for a GraphQL service to frequently execute the same query with
different variables plugged in; it is now possible to provide a cache
to com.walmartlabs.lacinia.pedestal2/query-parser-interceptor, which will bypass
query parsing; this can reduce execution time and memory churn.
A subtle bug in subscriptions was fixed; a streamer that passes nil to the source stream callback could prevent any values currently being executed from being sent back to the client.
Fixes a bug that prevented the request headers supplied in GraphiQL IDE from being included in the request. Request headers are now also persisted in the IDE URL, along with the query and query variables.
Updated the version of the packaged GraphiQL.
Requests for GraphQL IDE assets will now return a 304 Not Modified response when the client already has the current content.
Support for Lacinia request tracing has been added;
it is enabled by default when using com.walmartlabs.lacinia.pedestal2/default-service.
Several interceptors from the com.walmartlabs.lacinia.pedestal2 namespace have been modified to
clean up the context on exit (either :leave, or :error).
New com.walmartlabs.lacinia.pedestal2 namespace de-complects
configuration.
The new namespace provides the same basic building blocks, but (beyond a very simple
default-service function) encourages you to assemble the system from the basics
as you see fit; the prior approach had become overrun with confusing options.
These changes make it far easier to support multiple schemas, or versions of schemas, on different endpoints within the same server.
The inject-app-context-interceptor function has moved to the new
com.walmartlabs.lacinia.pedestal.interceptors namespace. This merges
and replaces the versions from the pedestal and pedestal.subscriptions namespaces.
Exceptions while executing a query (asynchronously or otherwise) are now caught, logged as an error, and converted into a 500 failure response.
New option :ide-connection-params supports setting connection parameters for subscriptions
in the GraphiQL IDE.
GraphiQL assets are now bundled in this library, and are no longer downloaded from a content distribution network.
Update version of GraphiQL to current, 0.12.0.
Problems with compatibility with Clojure 1.8 were resolved.
A spec for the service-map function is now provided.
Changes were made to allow for the updated structure of error maps in Lacinia 0.29.0.
The default set of interceptors has been split up slightly, in advance
of support for server-stored queries in an upcoming release.
In particular, the :com.walmartlabs.lacinia.pedestal/query-parser interceptor
was split in two: query-parser now only parses the query, and
the new :com.walmartlabs.lacinia.pedestal/prepare-query interceptor prepares
the query itself (that is, applies query variables).
The signature of com.walmartlabs.lacinia.pedestal/routes-from-interceptors
has changed in an incompatible way; it now expects the compiled schema
as the first argument (previously it was the root path); this function
is not generally invoked from user code.
Invalid JSON sent to lacinia-pedestal now results in proper 400 reponse, rather than throwing an exception (and a 500 response).
The com.walmartlabs.lacinia.pedestal.interceptors namespaces has been
removed outright, and with it, support for interceptor dependency maps.
A scattering of other functions related to dependency maps have also been removed.
Added a number of options to control the creation of core.async channels used to manage the flow of data for subscriptions.
Dependencies have been updated to latest.
For subscription requests, the connection parameters are now captured at connection time,
and available as the :com.walmartlabs.lacinia/connection-params key of the application context.
The com.walmartlabs.lacina.pedestal.interceptors namespace has been deprecated; it will be removed
in the 0.8.0 release.
Instead, use the new inject function, which adds (or replaces) an interceptor to a seq of
interceptors.
The interceptors namespace, and other functions related to interceptor maps, will be removed
in the 0.8.0 release. All functions scheduled for removal have been so marked in their docstrings.
The :api-key option has been removed, replaced with the :ide-headers option. This is a more general approach that supports multiple headers with arbitrary names.
It is now possible to configure the paths used to access the GraphQL endpoint and the GraphiQL IDE.
A few functions that were inadventently made public have been made private.
New function com.walmartlabs.lacinia.pedestal/service-map is now preferred
over pedestal-service (which has been deprecated).
service-map does not create the server; that is now the responsibility
of the calling code,
which makes it far easier to customize the service map before creating a server
from it.
Pedestal 0.5.3 includes a Content-Security-Policy header by default that disables
GraphiQL.
This header is now disabled when GraphiQL is enabled.
The compiled-schema passed to com.walmartlabs.lacinia.pedestal/pedestal-service may now
be a function that returns the compiled schema, which is useful when during testing
and development.
Added com.walmartlabs.lacinia.pedestal.interceptors/splice, which is
used to substitute an existing interceptor with a replacement.
Added support for GraphQL subscriptions! Subscriptions are patterned after Apollo GraphQL. lacinia-pedestal should be a drop-in replacement for Apollo GraphQL server.
The default interceptor stack has been reordered, slightly. New functions have been added to get the interceptors as a map annotated with dependency meta-data, and to extract the ordered interceptors from such a map.
com.walmartlabs.lacinia.pedestal/graphql-routes has been refactored:
it can be used as before, but its logic has been largely refactored
into smaller, reusable functions that are used when the default
interceptor stack must be modified for the application.
Error during request processing are now reported, in the response, in a more consistent fashion.
This version of lacinia-pedestal only works with com.walmartlabs/lacinia 0.19.0 and above.
The library and GitHub project have been renamed from pedestal-lacinia to
lacinia-pedestal.
Updated to com.walmartlabs/lacinia dependency to version 0.17.0.
Added an option to execute the GraphQL request asynchronously; when enabled, the handler returns a channel that conveys the Pedestal context containing the response, once the query has finished executing.
Introduced function com.walmartlabs.lacinia.pedestal/inject-app-context-interceptor and
converted query-executor-handler from a function to constant.
A new namespace, com.walmartlabs.lacinia.async, includes functions to adapt
field resolvers that return clojure.core.async channels to Lacinia.
Update dependency on com.walmartlabs/lacinia to latest version, 0.15.0.
First release.
Can you improve this documentation? These fine people already did:
Howard M. Lewis Ship, Howard Lewis Ship & Brandon CarrellEdit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |