@apollo-orbit/angular
Version:
A fully-featured GraphQL client for Angular with modular state management.
36 lines • 6.43 kB
JavaScript
import { ENVIRONMENT_INITIALIZER, inject, makeEnvironmentProviders } from '@angular/core';
import { ɵAPOLLO_INSTANCE_FACTORY as APOLLO_INSTANCE_FACTORY, Apollo as ApolloBase, provideApolloOrbit as provideApolloOrbitCore } from '@apollo-orbit/angular/core';
import { Apollo } from './apollo';
import { StateManager } from './stateManager';
export function withStates(...states) {
return {
kind: 'APOLLO_ORBIT_STATES',
providers: getStatesProviders(states)
};
}
export function provideApolloOrbit(...features) {
return makeEnvironmentProviders([
provideApolloOrbitCore(...features),
StateManager,
{ provide: Apollo, useExisting: ApolloBase }, // in case Apollo is accidentally imported from core entry point
{ provide: APOLLO_INSTANCE_FACTORY, useFactory: apolloInstanceFactory, deps: [StateManager] }
]);
}
export function provideStates(...states) {
return makeEnvironmentProviders(getStatesProviders(states));
}
function getStatesProviders(states) {
return [
{ provide: ENVIRONMENT_INITIALIZER, multi: true, useFactory: () => () => addStates(states) }
];
}
function apolloInstanceFactory(stateManager) {
return (clientId, client, defaultOptions) => {
const manager = stateManager.createManager(clientId, client);
return new Apollo(client, manager, defaultOptions);
};
}
function addStates(states) {
inject(StateManager).onAddStates(states.map(state => typeof state === 'function' ? state() : state));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VmZmVjdHMvcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBa0MsTUFBTSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBRSx3QkFBd0IsSUFBSSx1QkFBdUIsRUFBRSxNQUFNLElBQUksVUFBVSxFQUFxRyxrQkFBa0IsSUFBSSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXhRLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlDLE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBRyxNQUFtQztJQUMvRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixTQUFTLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDO0tBQ3RDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQUcsUUFBbUM7SUFDdkUsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QixzQkFBc0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUNuQyxZQUFZO1FBQ1osRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsRUFBRSxnRUFBZ0U7UUFDOUcsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFO0tBQzlGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQUcsTUFBbUM7SUFDbEUsT0FBTyx3QkFBd0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLE1BQW1DO0lBQzdELE9BQU87UUFDTCxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7S0FDN0YsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLFlBQTBCO0lBQ3ZELE9BQU8sQ0FBQyxRQUFnQixFQUFFLE1BQXlCLEVBQUUsY0FBK0IsRUFBVSxFQUFFO1FBQzlGLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdELE9BQU8sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsTUFBbUM7SUFDcEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN2RyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsIEVudmlyb25tZW50UHJvdmlkZXJzLCBQcm92aWRlciwgaW5qZWN0LCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgybVBUE9MTE9fSU5TVEFOQ0VfRkFDVE9SWSBhcyBBUE9MTE9fSU5TVEFOQ0VfRkFDVE9SWSwgQXBvbGxvIGFzIEFwb2xsb0Jhc2UsIEFwb2xsb0NsaWVudCwgybVBcG9sbG9JbnN0YW5jZUZhY3RvcnkgYXMgQXBvbGxvSW5zdGFuY2VGYWN0b3J5LCBBcG9sbG9PcmJpdEZlYXR1cmUsIERlZmF1bHRPcHRpb25zLCBwcm92aWRlQXBvbGxvT3JiaXQgYXMgcHJvdmlkZUFwb2xsb09yYml0Q29yZSB9IGZyb20gJ0BhcG9sbG8tb3JiaXQvYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3RhdGUgfSBmcm9tICdAYXBvbGxvLW9yYml0L2NvcmUnO1xyXG5pbXBvcnQgeyBBcG9sbG8gfSBmcm9tICcuL2Fwb2xsbyc7XHJcbmltcG9ydCB7IFN0YXRlTWFuYWdlciB9IGZyb20gJy4vc3RhdGVNYW5hZ2VyJztcclxuaW1wb3J0IHsgU3RhdGVGYWN0b3J5IH0gZnJvbSAnLi90eXBlcyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gd2l0aFN0YXRlcyguLi5zdGF0ZXM6IEFycmF5PFN0YXRlIHwgU3RhdGVGYWN0b3J5Pik6IEFwb2xsb09yYml0RmVhdHVyZSB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGtpbmQ6ICdBUE9MTE9fT1JCSVRfU1RBVEVTJyxcclxuICAgIHByb3ZpZGVyczogZ2V0U3RhdGVzUHJvdmlkZXJzKHN0YXRlcylcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFwb2xsb09yYml0KC4uLmZlYXR1cmVzOiBBcnJheTxBcG9sbG9PcmJpdEZlYXR1cmU+KTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xyXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xyXG4gICAgcHJvdmlkZUFwb2xsb09yYml0Q29yZSguLi5mZWF0dXJlcyksXHJcbiAgICBTdGF0ZU1hbmFnZXIsXHJcbiAgICB7IHByb3ZpZGU6IEFwb2xsbywgdXNlRXhpc3Rpbmc6IEFwb2xsb0Jhc2UgfSwgLy8gaW4gY2FzZSBBcG9sbG8gaXMgYWNjaWRlbnRhbGx5IGltcG9ydGVkIGZyb20gY29yZSBlbnRyeSBwb2ludFxyXG4gICAgeyBwcm92aWRlOiBBUE9MTE9fSU5TVEFOQ0VfRkFDVE9SWSwgdXNlRmFjdG9yeTogYXBvbGxvSW5zdGFuY2VGYWN0b3J5LCBkZXBzOiBbU3RhdGVNYW5hZ2VyXSB9XHJcbiAgXSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlU3RhdGVzKC4uLnN0YXRlczogQXJyYXk8U3RhdGUgfCBTdGF0ZUZhY3Rvcnk+KTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xyXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoZ2V0U3RhdGVzUHJvdmlkZXJzKHN0YXRlcykpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRTdGF0ZXNQcm92aWRlcnMoc3RhdGVzOiBBcnJheTxTdGF0ZSB8IFN0YXRlRmFjdG9yeT4pOiBBcnJheTxQcm92aWRlcj4ge1xyXG4gIHJldHVybiBbXHJcbiAgICB7IHByb3ZpZGU6IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLCBtdWx0aTogdHJ1ZSwgdXNlRmFjdG9yeTogKCkgPT4gKCkgPT4gYWRkU3RhdGVzKHN0YXRlcykgfVxyXG4gIF07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFwb2xsb0luc3RhbmNlRmFjdG9yeShzdGF0ZU1hbmFnZXI6IFN0YXRlTWFuYWdlcik6IEFwb2xsb0luc3RhbmNlRmFjdG9yeSB7XHJcbiAgcmV0dXJuIChjbGllbnRJZDogc3RyaW5nLCBjbGllbnQ6IEFwb2xsb0NsaWVudDxhbnk+LCBkZWZhdWx0T3B0aW9ucz86IERlZmF1bHRPcHRpb25zKTogQXBvbGxvID0+IHtcclxuICAgIGNvbnN0IG1hbmFnZXIgPSBzdGF0ZU1hbmFnZXIuY3JlYXRlTWFuYWdlcihjbGllbnRJZCwgY2xpZW50KTtcclxuICAgIHJldHVybiBuZXcgQXBvbGxvKGNsaWVudCwgbWFuYWdlciwgZGVmYXVsdE9wdGlvbnMpO1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFkZFN0YXRlcyhzdGF0ZXM6IEFycmF5PFN0YXRlIHwgU3RhdGVGYWN0b3J5Pik6IHZvaWQge1xyXG4gIGluamVjdChTdGF0ZU1hbmFnZXIpLm9uQWRkU3RhdGVzKHN0YXRlcy5tYXAoc3RhdGUgPT4gdHlwZW9mIHN0YXRlID09PSAnZnVuY3Rpb24nID8gc3RhdGUoKSA6IHN0YXRlKSk7XHJcbn1cclxuIl19