You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import { NgModule } from '@angular/core';
|
|
import { APOLLO_OPTIONS } from 'apollo-angular';
|
|
import {
|
|
ApolloClientOptions,
|
|
ApolloLink,
|
|
concat,
|
|
InMemoryCache,
|
|
} from '@apollo/client/core';
|
|
import { HttpLink } from 'apollo-angular/http';
|
|
import { environment } from '../environments/environment';
|
|
|
|
const uri = environment.apiUrl + '/graphql'; // <-- add the URL of the GraphQL server here
|
|
|
|
const cleanTypeName = new ApolloLink((operation, forward) => {
|
|
if (operation.variables) {
|
|
const omitTypename = (key: string, value: any) =>
|
|
key === '__typename' ? undefined : value;
|
|
operation.variables = JSON.parse(
|
|
JSON.stringify(operation.variables),
|
|
omitTypename
|
|
);
|
|
}
|
|
return forward(operation).map((data) => {
|
|
return data;
|
|
});
|
|
});
|
|
|
|
export function createApollo(httpLink: HttpLink): ApolloClientOptions<any> {
|
|
return {
|
|
link: concat(cleanTypeName, httpLink.create({ uri })),
|
|
cache: new InMemoryCache({}),
|
|
};
|
|
}
|
|
|
|
@NgModule({
|
|
providers: [
|
|
{
|
|
provide: APOLLO_OPTIONS,
|
|
useFactory: createApollo,
|
|
deps: [HttpLink],
|
|
},
|
|
],
|
|
})
|
|
export class GraphQLModule {}
|