import Amplify from "@aws-amplify/core"; import Auth from "@aws-amplify/auth"; import { setContext } from "apollo-link-context"; import { ApolloLink } from "apollo-link"; import { createHttpLink } from "apollo-link-http"; import AWSAppSyncClient, { AUTH_TYPE, createAppSyncLink } from "aws-appsync"; import awsConfig from "../aws-exports"; Amplify.configure({ ...awsConfig, Analytics: { disabled: true } }); const appsyncClient = new AWSAppSyncClient(awsConfig, { link: createAppSyncLink({ url: awsConfig.aws_appsync_graphqlEndpoint, region: awsConfig.aws_appsync_region, auth: { type: AUTH_TYPE.AWS_IAM, credentials: async () => await Auth.currentCredentials() }, resultsFetcherLink: ApolloLink.from([ setContext(async (request, previousContext) => { try { const session = await Auth.currentSession(); if (session) { delete previousContext.headers["X-Amz-Security-Token"]; return { headers: { ...previousContext.headers, Authorization: session.getIdToken().getJwtToken() } }; } } catch (e) { // log or catch error } return { headers: previousContext.headers }; }), createHttpLink({ uri: awsConfig.aws_appsync_graphqlEndpoint }) ]) }) }); export default appsyncClient;