12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- /**
- * Using next-with-apollo
- * https://github.com/lfades/next-with-apollo
- *
- * Changes:
- * * Reading endpoint and prodEndpoint from a config file
- * * Setting request to handle credentials.
- */
- import withApollo from 'next-with-apollo'
- import ApolloClient from 'apollo-client'
- import { InMemoryCache } from 'apollo-cache-inmemory'
- import { onError } from 'apollo-link-error'
- import { ApolloLink } from 'apollo-link'
- import { createUploadLink } from 'apollo-upload-client'
- import { endpoint, prodEndpoint } from '../config'
- import { resolvers, typeDefs, initialState } from './localState'
- const cache = new InMemoryCache()
- function createClient ({ ctx, headers }) {
- return new ApolloClient({
- link: ApolloLink.from([
- onError(({ graphQLErrors, networkError }) => {
- if (graphQLErrors) {
- graphQLErrors.map(({ message, locations, path }) =>
- console.log(
- `[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`
- )
- )
- }
- if (networkError) console.log(`[Network error]: ${networkError}`)
- }),
- createUploadLink({
- uri: process.env.NODE_ENV === 'development' ? endpoint : prodEndpoint,
- headers,
- credentials: 'include'
- })
- ]),
- fetchOptions: { mode: 'no-cors' },
- cache,
- resolvers,
- typeDefs
- })
- }
- cache.writeData(initialState)
- export default withApollo(createClient)
|