UNPKG

apollo-angular

Version:

Use your GraphQL data in your Angular app, with the Apollo Client

66 lines 8.67 kB
import { Apollo } from 'apollo-angular'; import { ApolloLink, InMemoryCache, ApolloCache, } from '@apollo/client/core'; import { NgModule, InjectionToken, Inject, Optional } from '@angular/core'; import { ApolloTestingController } from './controller'; import { ApolloTestingBackend } from './backend'; export const APOLLO_TESTING_CACHE = new InjectionToken('apollo-angular/testing cache'); export const APOLLO_TESTING_NAMED_CACHE = new InjectionToken('apollo-angular/testing named cache'); export const APOLLO_TESTING_CLIENTS = new InjectionToken('apollo-angular/testing named clients'); function addClient(name, op) { op.clientName = name; return op; } export class ApolloTestingModuleCore { constructor(apollo, backend, namedClients, cache, namedCaches) { function createOptions(name, c) { return { link: new ApolloLink((operation) => backend.handle(addClient(name, operation))), cache: c || new InMemoryCache({ addTypename: false, }), }; } apollo.create(createOptions('default', cache)); if (namedClients && namedClients.length) { namedClients.forEach((name) => { const caches = namedCaches && typeof namedCaches === 'object' ? namedCaches : {}; apollo.createNamed(name, createOptions(name, caches[name])); }); } } } ApolloTestingModuleCore.decorators = [ { type: NgModule, args: [{ providers: [ ApolloTestingBackend, { provide: ApolloTestingController, useExisting: ApolloTestingBackend }, ], },] } ]; ApolloTestingModuleCore.ctorParameters = () => [ { type: Apollo }, { type: ApolloTestingBackend }, { type: Array, decorators: [{ type: Optional }, { type: Inject, args: [APOLLO_TESTING_CLIENTS,] }] }, { type: ApolloCache, decorators: [{ type: Optional }, { type: Inject, args: [APOLLO_TESTING_CACHE,] }] }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APOLLO_TESTING_NAMED_CACHE,] }] } ]; export class ApolloTestingModule { static withClients(names) { return { ngModule: ApolloTestingModuleCore, providers: [ { provide: APOLLO_TESTING_CLIENTS, useValue: names, }, ], }; } } ApolloTestingModule.decorators = [ { type: NgModule, args: [{ imports: [ApolloTestingModuleCore], },] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6Ii93b3Jrc3BhY2VzL2Fwb2xsby1hbmd1bGFyL3BhY2thZ2VzL2Fwb2xsby1hbmd1bGFyL3Rlc3Rpbmcvc3JjLyIsInNvdXJjZXMiOlsibW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsVUFBVSxFQUVWLGFBQWEsRUFDYixXQUFXLEdBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNyRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFLL0MsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQ3BELDhCQUE4QixDQUMvQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQzFELG9DQUFvQyxDQUNyQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQ3RELHNDQUFzQyxDQUN2QyxDQUFDO0FBRUYsU0FBUyxTQUFTLENBQUMsSUFBWSxFQUFFLEVBQWlCO0lBQy9DLEVBQWdCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUVwQyxPQUFPLEVBQWUsQ0FBQztBQUN6QixDQUFDO0FBUUQsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxZQUNFLE1BQWMsRUFDZCxPQUE2QixFQUc3QixZQUF1QixFQUd2QixLQUF3QixFQUd4QixXQUFpQjtRQUVqQixTQUFTLGFBQWEsQ0FBQyxJQUFZLEVBQUUsQ0FBMkI7WUFDOUQsT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSSxVQUFVLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUNqQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FDM0M7Z0JBQ0QsS0FBSyxFQUNILENBQUM7b0JBQ0QsSUFBSSxhQUFhLENBQUM7d0JBQ2hCLFdBQVcsRUFBRSxLQUFLO3FCQUNuQixDQUFDO2FBQ0wsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUUvQyxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQ3ZDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDNUIsTUFBTSxNQUFNLEdBQ1YsV0FBVyxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBRXBFLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7O1lBM0NGLFFBQVEsU0FBQztnQkFDUixTQUFTLEVBQUU7b0JBQ1Qsb0JBQW9CO29CQUNwQixFQUFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUM7aUJBQ3RFO2FBQ0Y7OztZQXRDTyxNQUFNO1lBVU4sb0JBQW9CO3dDQWlDdkIsUUFBUSxZQUNSLE1BQU0sU0FBQyxzQkFBc0I7WUF2Q2hDLFdBQVcsdUJBeUNSLFFBQVEsWUFDUixNQUFNLFNBQUMsb0JBQW9COzRDQUUzQixRQUFRLFlBQ1IsTUFBTSxTQUFDLDBCQUEwQjs7QUFnQ3RDLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFlO1FBQ2hDLE9BQU87WUFDTCxRQUFRLEVBQUUsdUJBQXVCO1lBQ2pDLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsc0JBQXNCO29CQUMvQixRQUFRLEVBQUUsS0FBSztpQkFDaEI7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDOzs7WUFkRixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7YUFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fwb2xsb30gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgQXBvbGxvTGluayxcbiAgT3BlcmF0aW9uIGFzIExpbmtPcGVyYXRpb24sXG4gIEluTWVtb3J5Q2FjaGUsXG4gIEFwb2xsb0NhY2hlLFxufSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7TmdNb2R1bGUsIEluamVjdGlvblRva2VuLCBJbmplY3QsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtBcG9sbG9UZXN0aW5nQ29udHJvbGxlcn0gZnJvbSAnLi9jb250cm9sbGVyJztcbmltcG9ydCB7QXBvbGxvVGVzdGluZ0JhY2tlbmR9IGZyb20gJy4vYmFja2VuZCc7XG5pbXBvcnQge09wZXJhdGlvbn0gZnJvbSAnLi9vcGVyYXRpb24nO1xuXG5leHBvcnQgdHlwZSBOYW1lZENhY2hlcyA9IFJlY29yZDxzdHJpbmcsIEFwb2xsb0NhY2hlPGFueT4gfCB1bmRlZmluZWQgfCBudWxsPjtcblxuZXhwb3J0IGNvbnN0IEFQT0xMT19URVNUSU5HX0NBQ0hFID0gbmV3IEluamVjdGlvblRva2VuPEFwb2xsb0NhY2hlPGFueT4+KFxuICAnYXBvbGxvLWFuZ3VsYXIvdGVzdGluZyBjYWNoZScsXG4pO1xuXG5leHBvcnQgY29uc3QgQVBPTExPX1RFU1RJTkdfTkFNRURfQ0FDSEUgPSBuZXcgSW5qZWN0aW9uVG9rZW48TmFtZWRDYWNoZXM+KFxuICAnYXBvbGxvLWFuZ3VsYXIvdGVzdGluZyBuYW1lZCBjYWNoZScsXG4pO1xuXG5leHBvcnQgY29uc3QgQVBPTExPX1RFU1RJTkdfQ0xJRU5UUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmdbXT4oXG4gICdhcG9sbG8tYW5ndWxhci90ZXN0aW5nIG5hbWVkIGNsaWVudHMnLFxuKTtcblxuZnVuY3Rpb24gYWRkQ2xpZW50KG5hbWU6IHN0cmluZywgb3A6IExpbmtPcGVyYXRpb24pOiBPcGVyYXRpb24ge1xuICAob3AgYXMgT3BlcmF0aW9uKS5jbGllbnROYW1lID0gbmFtZTtcblxuICByZXR1cm4gb3AgYXMgT3BlcmF0aW9uO1xufVxuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBBcG9sbG9UZXN0aW5nQmFja2VuZCxcbiAgICB7cHJvdmlkZTogQXBvbGxvVGVzdGluZ0NvbnRyb2xsZXIsIHVzZUV4aXN0aW5nOiBBcG9sbG9UZXN0aW5nQmFja2VuZH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFwb2xsb1Rlc3RpbmdNb2R1bGVDb3JlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgYXBvbGxvOiBBcG9sbG8sXG4gICAgYmFja2VuZDogQXBvbGxvVGVzdGluZ0JhY2tlbmQsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KEFQT0xMT19URVNUSU5HX0NMSUVOVFMpXG4gICAgbmFtZWRDbGllbnRzPzogc3RyaW5nW10sXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KEFQT0xMT19URVNUSU5HX0NBQ0hFKVxuICAgIGNhY2hlPzogQXBvbGxvQ2FjaGU8YW55PixcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoQVBPTExPX1RFU1RJTkdfTkFNRURfQ0FDSEUpXG4gICAgbmFtZWRDYWNoZXM/OiBhbnksIC8vIEZJWDogdXNpbmcgTmFtZWRDYWNoZXMgaGVyZSBtYWtlcyBuZ2MgZmFpbFxuICApIHtcbiAgICBmdW5jdGlvbiBjcmVhdGVPcHRpb25zKG5hbWU6IHN0cmluZywgYz86IEFwb2xsb0NhY2hlPGFueT4gfCBudWxsKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsaW5rOiBuZXcgQXBvbGxvTGluaygob3BlcmF0aW9uKSA9PlxuICAgICAgICAgIGJhY2tlbmQuaGFuZGxlKGFkZENsaWVudChuYW1lLCBvcGVyYXRpb24pKSxcbiAgICAgICAgKSxcbiAgICAgICAgY2FjaGU6XG4gICAgICAgICAgYyB8fFxuICAgICAgICAgIG5ldyBJbk1lbW9yeUNhY2hlKHtcbiAgICAgICAgICAgIGFkZFR5cGVuYW1lOiBmYWxzZSxcbiAgICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgYXBvbGxvLmNyZWF0ZShjcmVhdGVPcHRpb25zKCdkZWZhdWx0JywgY2FjaGUpKTtcblxuICAgIGlmIChuYW1lZENsaWVudHMgJiYgbmFtZWRDbGllbnRzLmxlbmd0aCkge1xuICAgICAgbmFtZWRDbGllbnRzLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgY29uc3QgY2FjaGVzID1cbiAgICAgICAgICBuYW1lZENhY2hlcyAmJiB0eXBlb2YgbmFtZWRDYWNoZXMgPT09ICdvYmplY3QnID8gbmFtZWRDYWNoZXMgOiB7fTtcblxuICAgICAgICBhcG9sbG8uY3JlYXRlTmFtZWQobmFtZSwgY3JlYXRlT3B0aW9ucyhuYW1lLCBjYWNoZXNbbmFtZV0pKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQXBvbGxvVGVzdGluZ01vZHVsZUNvcmVdLFxufSlcbmV4cG9ydCBjbGFzcyBBcG9sbG9UZXN0aW5nTW9kdWxlIHtcbiAgc3RhdGljIHdpdGhDbGllbnRzKG5hbWVzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQXBvbGxvVGVzdGluZ01vZHVsZUNvcmUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFQT0xMT19URVNUSU5HX0NMSUVOVFMsXG4gICAgICAgICAgdXNlVmFsdWU6IG5hbWVzLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=