@loona/core
Version:
App State Management done with GraphQL (core package)
53 lines • 4.79 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import { ApolloLink, } from 'apollo-link';
import { withClientState } from 'apollo-link-state';
import { Manager } from './manager';
import { createMutationSchema } from './internal/mutation';
import { createResolvers } from './internal/resolvers';
/**
* @param {?} obj
* @return {?}
*/
function isManager(obj) {
return obj instanceof Manager;
}
export class LoonaLink extends ApolloLink {
/**
* @param {?} optionsOrManager
*/
constructor(optionsOrManager) {
super();
if (isManager(optionsOrManager)) {
this.manager = optionsOrManager;
}
else {
this.manager = new Manager(optionsOrManager);
}
this.stateLink = withClientState({
cache: this.manager.cache,
resolvers: () => {
return Object.assign({ Mutation: createMutationSchema(this.manager) }, createResolvers(this.manager));
},
defaults: this.manager.defaults,
typeDefs: this.manager.typeDefs,
});
}
/**
* @param {?} operation
* @param {?} forward
* @return {?}
*/
request(operation, forward) {
return (/** @type {?} */ (this.stateLink.request(operation, forward)));
}
}
if (false) {
/** @type {?} */
LoonaLink.prototype.manager;
/** @type {?} */
LoonaLink.prototype.stateLink;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bsb29uYS9jb3JlLyIsInNvdXJjZXMiOlsibGluay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFVBQVUsR0FLWCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBR3JELFNBQVMsU0FBUyxDQUFDLEdBQVE7SUFDekIsT0FBTyxHQUFHLFlBQVksT0FBTyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxNQUFNLE9BQU8sU0FBVSxTQUFRLFVBQVU7Ozs7SUFJdkMsWUFBWSxnQkFBbUM7UUFDN0MsS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLENBQUM7U0FDakM7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUM5QztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDO1lBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFDekIsU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFDZCx1QkFDRSxRQUFRLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUN6QyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUNoQztZQUNKLENBQUM7WUFDRCxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRO1lBQy9CLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7U0FDaEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7O0lBRU0sT0FBTyxDQUNaLFNBQW9CLEVBQ3BCLE9BQWlCO1FBRWpCLE9BQU8sbUJBQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUVoRCxDQUFDO0lBQ0osQ0FBQztDQUNGOzs7SUFqQ0MsNEJBQXdCOztJQUN4Qiw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcG9sbG9MaW5rLFxuICBPcGVyYXRpb24sXG4gIE5leHRMaW5rLFxuICBPYnNlcnZhYmxlLFxuICBGZXRjaFJlc3VsdCxcbn0gZnJvbSAnYXBvbGxvLWxpbmsnO1xuaW1wb3J0IHt3aXRoQ2xpZW50U3RhdGV9IGZyb20gJ2Fwb2xsby1saW5rLXN0YXRlJztcblxuaW1wb3J0IHtNYW5hZ2VyfSBmcm9tICcuL21hbmFnZXInO1xuaW1wb3J0IHtjcmVhdGVNdXRhdGlvblNjaGVtYX0gZnJvbSAnLi9pbnRlcm5hbC9tdXRhdGlvbic7XG5pbXBvcnQge2NyZWF0ZVJlc29sdmVyc30gZnJvbSAnLi9pbnRlcm5hbC9yZXNvbHZlcnMnO1xuaW1wb3J0IHtPcHRpb25zfSBmcm9tICcuL3R5cGVzL29wdGlvbnMnO1xuXG5mdW5jdGlvbiBpc01hbmFnZXIob2JqOiBhbnkpOiBvYmogaXMgTWFuYWdlciB7XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBNYW5hZ2VyO1xufVxuXG5leHBvcnQgY2xhc3MgTG9vbmFMaW5rIGV4dGVuZHMgQXBvbGxvTGluayB7XG4gIHB1YmxpYyBtYW5hZ2VyOiBNYW5hZ2VyO1xuICBwcml2YXRlIHN0YXRlTGluazogQXBvbGxvTGluaztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zT3JNYW5hZ2VyOiBPcHRpb25zIHwgTWFuYWdlcikge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAoaXNNYW5hZ2VyKG9wdGlvbnNPck1hbmFnZXIpKSB7XG4gICAgICB0aGlzLm1hbmFnZXIgPSBvcHRpb25zT3JNYW5hZ2VyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hbmFnZXIgPSBuZXcgTWFuYWdlcihvcHRpb25zT3JNYW5hZ2VyKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlTGluayA9IHdpdGhDbGllbnRTdGF0ZSh7XG4gICAgICBjYWNoZTogdGhpcy5tYW5hZ2VyLmNhY2hlLFxuICAgICAgcmVzb2x2ZXJzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgTXV0YXRpb246IGNyZWF0ZU11dGF0aW9uU2NoZW1hKHRoaXMubWFuYWdlciksXG4gICAgICAgICAgLi4uY3JlYXRlUmVzb2x2ZXJzKHRoaXMubWFuYWdlciksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgZGVmYXVsdHM6IHRoaXMubWFuYWdlci5kZWZhdWx0cyxcbiAgICAgIHR5cGVEZWZzOiB0aGlzLm1hbmFnZXIudHlwZURlZnMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVxdWVzdChcbiAgICBvcGVyYXRpb246IE9wZXJhdGlvbixcbiAgICBmb3J3YXJkOiBOZXh0TGluayxcbiAgKTogT2JzZXJ2YWJsZTxGZXRjaFJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlTGluay5yZXF1ZXN0KG9wZXJhdGlvbiwgZm9yd2FyZCkgYXMgT2JzZXJ2YWJsZTxcbiAgICAgIEZldGNoUmVzdWx0XG4gICAgPjtcbiAgfVxufVxuIl19