UNPKG

@loona/angular

Version:

App State Management done with GraphQL (angular integration)

166 lines 13.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Injectable, ErrorHandler } from '@angular/core'; import { Apollo } from 'apollo-angular'; import { Subject, queueScheduler, merge, throwError } from 'rxjs'; import { observeOn, tap, catchError } from 'rxjs/operators'; import { isMutation, getMutation, isDocument, Manager, withUpdates, getActionType, buildActionFromResult, buildActionFromError, } from '@loona/core'; import { InnerActions, ScannedActions } from './actions'; /** * @record */ export function QueryOptions() { } /** * @record */ export function MutationOptions() { } /** * @record * @template V */ export function TypedVariables() { } if (false) { /** @type {?|undefined} */ TypedVariables.prototype.variables; } var Loona = /** @class */ (function () { function Loona(apollo, manager, actions, scannedActions, errorHandler) { this.apollo = apollo; this.manager = manager; this.actions = actions; this.direct$ = new Subject(); this.queue$ = merge(actions, this.direct$).pipe(observeOn(queueScheduler)); this.queue$.subscribe({ next: function (action) { scannedActions.next(action); }, error: function (error) { errorHandler.handleError(error); }, }); } /** * @template T, V * @param {?} queryOrOptions * @param {?=} variables * @param {?=} options * @return {?} */ Loona.prototype.query = /** * @template T, V * @param {?} queryOrOptions * @param {?=} variables * @param {?=} options * @return {?} */ function (queryOrOptions, variables, options) { return this.apollo.watchQuery(isDocument(queryOrOptions) ? tslib_1.__assign({ query: queryOrOptions, variables: variables }, options) : queryOrOptions); }; /** * @template T, V * @param {?} mutationOrOptions * @param {?=} variables * @param {?=} options * @return {?} */ Loona.prototype.mutate = /** * @template T, V * @param {?} mutationOrOptions * @param {?=} variables * @param {?=} options * @return {?} */ function (mutationOrOptions, variables, options) { var _this = this; /** @type {?} */ var config = isDocument(mutationOrOptions) ? tslib_1.__assign({ mutation: mutationOrOptions, variables: variables }, options) : mutationOrOptions; return this.apollo .mutate(withUpdates(config, this.manager)) .pipe(tap(function (result) { _this.direct$.next(buildActionFromResult(config, result)); }), catchError(function (error) { _this.direct$.next(buildActionFromError(config, error)); return throwError(error); })); }; /** * @param {?} action * @return {?} */ Loona.prototype.dispatch = /** * @param {?} action * @return {?} */ function (action) { if (isMutation(action)) { /** @type {?} */ var mutation = getMutation(action); this.mutate(tslib_1.__assign({ mutation: mutation }, action)).subscribe(); } else { this.actions.next(tslib_1.__assign({ type: getActionType(action) }, action)); } }; /** * @template T * @return {?} */ Loona.prototype.extract = /** * @template T * @return {?} */ function () { return this.apollo.getClient().extract(); }; /** * @return {?} */ Loona.prototype.reset = /** * @return {?} */ function () { this.apollo.getClient().resetStore(); }; /** * @param {?} state * @return {?} */ Loona.prototype.restore = /** * @param {?} state * @return {?} */ function (state) { this.apollo.getClient().restore(state); }; Loona.decorators = [ { type: Injectable } ]; /** @nocollapse */ Loona.ctorParameters = function () { return [ { type: Apollo }, { type: Manager }, { type: InnerActions }, { type: ScannedActions }, { type: ErrorHandler } ]; }; return Loona; }()); export { Loona }; if (false) { /** @type {?} */ Loona.prototype.queue$; /** @type {?} */ Loona.prototype.direct$; /** @type {?} */ Loona.prototype.apollo; /** @type {?} */ Loona.prototype.manager; /** @type {?} */ Loona.prototype.actions; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGxvb25hL2FuZ3VsYXIvIiwic291cmNlcyI6WyJjbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsTUFBTSxFQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFNaEQsT0FBTyxFQUFhLE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM1RSxPQUFPLEVBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxPQUFPLEVBQ0wsVUFBVSxFQUNWLFdBQVcsRUFFWCxVQUFVLEVBQ1YsT0FBTyxFQUNQLFdBQVcsRUFDWCxhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLG9CQUFvQixHQUNyQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLFdBQVcsQ0FBQzs7OztBQUl2RCxrQ0FDMkQ7Ozs7QUFFM0QscUNBQ2dFOzs7OztBQUloRSxvQ0FFQzs7O0lBREMsbUNBQWM7O0FBR2hCO0lBS0UsZUFDVSxNQUFjLEVBQ2QsT0FBZ0IsRUFDaEIsT0FBcUIsRUFDN0IsY0FBOEIsRUFDOUIsWUFBMEI7UUFKbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsWUFBTyxHQUFQLE9BQU8sQ0FBYztRQUx2QixZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQVN0QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMs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ZSwgRXJyb3JIYW5kbGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXBvbGxvLCBRdWVyeVJlZn0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgV2F0Y2hRdWVyeU9wdGlvbnMsXG4gIE11dGF0aW9uT3B0aW9ucyBhcyBDb3JlTXV0YXRpb25PcHRpb25zLFxufSBmcm9tICdhcG9sbG8tY2xpZW50JztcbmltcG9ydCB7RmV0Y2hSZXN1bHR9IGZyb20gJ2Fwb2xsby1saW5rJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdCwgcXVldWVTY2hlZHVsZXIsIG1lcmdlLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7b2JzZXJ2ZU9uLCB0YXAsIGNhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RG9jdW1lbnROb2RlfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7XG4gIGlzTXV0YXRpb24sXG4gIGdldE11dGF0aW9uLFxuICBBY3Rpb24sXG4gIGlzRG9jdW1lbnQsXG4gIE1hbmFnZXIsXG4gIHdpdGhVcGRhdGVzLFxuICBnZXRBY3Rpb25UeXBlLFxuICBidWlsZEFjdGlvbkZyb21SZXN1bHQsXG4gIGJ1aWxkQWN0aW9uRnJvbUVycm9yLFxufSBmcm9tICdAbG9vbmEvY29yZSc7XG5cbmltcG9ydCB7SW5uZXJBY3Rpb25zLCBTY2FubmVkQWN0aW9uc30gZnJvbSAnLi9hY3Rpb25zJztcblxuZXhwb3J0IHR5cGUgT21pdDxULCBLIGV4dGVuZHMga2V5b2YgVD4gPSBQaWNrPFQsIEV4Y2x1ZGU8a2V5b2YgVCwgSz4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5T3B0aW9uc1xuICBleHRlbmRzIE9taXQ8V2F0Y2hRdWVyeU9wdGlvbnMsICdxdWVyeScgfCAndmFyaWFibGVzJz4ge31cblxuZXhwb3J0IGludGVyZmFjZSBNdXRhdGlvbk9wdGlvbnNcbiAgZXh0ZW5kcyBPbWl0PENvcmVNdXRhdGlvbk9wdGlvbnMsICdtdXRhdGlvbicgfCAndmFyaWFibGVzJz4ge31cblxuZXhwb3J0IHR5cGUgUiA9IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZWRWYXJpYWJsZXM8Vj4ge1xuICB2YXJpYWJsZXM/OiBWO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTG9vbmEge1xuICBwcml2YXRlIHF1ZXVlJDogT2JzZXJ2YWJsZTxBY3Rpb24+O1xuICBwcml2YXRlIGRpcmVjdCQgPSBuZXcgU3ViamVjdDxBY3Rpb24+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcG9sbG86IEFwb2xsbyxcbiAgICBwcml2YXRlIG1hbmFnZXI6IE1hbmFnZXIsXG4gICAgcHJpdmF0ZSBhY3Rpb25zOiBJbm5lckFjdGlvbnMsXG4gICAgc2Nhbm5lZEFjdGlvbnM6IFNjYW5uZWRBY3Rpb25zLFxuICAgIGVycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyLFxuICApIHtcbiAgICB0aGlzLnF1ZXVlJCA9IG1lcmdlKGFjdGlvbnMsIHRoaXMuZGlyZWN0JCkucGlwZShvYnNlcnZlT24ocXVldWVTY2hlZHVsZXIpKTtcbiAgICB0aGlzLnF1ZXVlJC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogYWN0aW9uID0+IHtcbiAgICAgICAgc2Nhbm5lZEFjdGlvbnMubmV4dChhY3Rpb24pO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgIGVycm9ySGFuZGxlci5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcXVlcnk8VCwgViA9IGFueT4oXG4gICAgcXVlcnk6IERvY3VtZW50Tm9kZSxcbiAgICB2YXJpYWJsZXM/OiBWLFxuICAgIG9wdGlvbnM/OiBRdWVyeU9wdGlvbnMsXG4gICk6IFF1ZXJ5UmVmPFQsIFY+O1xuXG4gIHF1ZXJ5PFQsIFYgPSBhbnk+KFxuICAgIG9wdGlvbnM6IFdhdGNoUXVlcnlPcHRpb25zICYgVHlwZWRWYXJpYWJsZXM8Vj4sXG4gICk6IFF1ZXJ5UmVmPFQsIFY+O1xuXG4gIHF1ZXJ5PFQsIFYgPSBhbnk+KFxuICAgIHF1ZXJ5T3JPcHRpb25zOiBEb2N1bWVudE5vZGUgfCAoV2F0Y2hRdWVyeU9wdGlvbnMgJiBUeXBlZFZhcmlhYmxlczxWPiksXG4gICAgdmFyaWFibGVzPzogVixcbiAgICBvcHRpb25zPzogUXVlcnlPcHRpb25zLFxuICApOiBRdWVyeVJlZjxULCBWPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBvbGxvLndhdGNoUXVlcnk8VCwgVj4oXG4gICAgICBpc0RvY3VtZW50KHF1ZXJ5T3JPcHRpb25zKVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeU9yT3B0aW9ucyxcbiAgICAgICAgICAgIHZhcmlhYmxlcyxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgfVxuICAgICAgICA6IHF1ZXJ5T3JPcHRpb25zLFxuICAgICk7XG4gIH1cblxuICBtdXRhdGU8VCwgViA9IFI+KFxuICAgIG11dGF0aW9uOiBEb2N1bWVudE5vZGUsXG4gICAgdmFyaWFibGVzPzogVixcbiAgICBvcHRpb25zPzogTXV0YXRpb25PcHRpb25zLFxuICApOiBPYnNlcnZhYmxlPEZldGNoUmVzdWx0PFQ+PjtcblxuICBtdXRhdGU8VCwgViA9IFI+KFxuICAgIG9wdGlvbnM6IENvcmVNdXRhdGlvbk9wdGlvbnM8VCwgVj4sXG4gICk6IE9ic2VydmFibGU8RmV0Y2hSZXN1bHQ8VD4+O1xuXG4gIG11dGF0ZTxULCBWID0gUj4oXG4gICAgbXV0YXRpb25Pck9wdGlvbnM6IERvY3VtZW50Tm9kZSB8IENvcmVNdXRhdGlvbk9wdGlvbnM8VCwgVj4sXG4gICAgdmFyaWFibGVzPzogVixcbiAgICBvcHRpb25zPzogTXV0YXRpb25PcHRpb25zLFxuICApOiBPYnNlcnZhYmxlPEZldGNoUmVzdWx0PFQ+PiB7XG4gICAgY29uc3QgY29uZmlnID0gaXNEb2N1bWVudChtdXRhdGlvbk9yT3B0aW9ucylcbiAgICAgID8ge1xuICAgICAgICAgIG11dGF0aW9uOiBtdXRhdGlvbk9yT3B0aW9ucyxcbiAgICAgICAgICB2YXJpYWJsZXMsXG4gICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgfVxuICAgICAgOiBtdXRhdGlvbk9yT3B0aW9ucztcblxuICAgIHJldHVybiB0aGlzLmFwb2xsb1xuICAgICAgLm11dGF0ZTxULCBWPih3aXRoVXBkYXRlczxULCBWPihjb25maWcsIHRoaXMubWFuYWdlcikpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgdGhpcy5kaXJlY3QkLm5leHQoYnVpbGRBY3Rpb25Gcm9tUmVzdWx0KGNvbmZpZywgcmVzdWx0KSk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmRpcmVjdCQubmV4dChidWlsZEFjdGlvbkZyb21FcnJvcihjb25maWcsIGVycm9yKSk7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBkaXNwYXRjaChhY3Rpb246IGFueSk6IHZvaWQge1xuICAgIGlmIChpc011dGF0aW9uKGFjdGlvbikpIHtcbiAgICAgIGNvbnN0IG11dGF0aW9uID0gZ2V0TXV0YXRpb24oYWN0aW9uKTtcblxuICAgICAgdGhpcy5tdXRhdGUoe1xuICAgICAgICBtdXRhdGlvbixcbiAgICAgICAgLi4uYWN0aW9uLFxuICAgICAgfSkuc3Vic2NyaWJlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aW9ucy5uZXh0KHtcbiAgICAgICAgdHlwZTogZ2V0QWN0aW9uVHlwZShhY3Rpb24pLFxuICAgICAgICAuLi5hY3Rpb24sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBleHRyYWN0PFQgPSBhbnk+KCk6IFQge1xuICAgIHJldHVybiB0aGlzLmFwb2xsby5nZXRDbGllbnQoKS5leHRyYWN0KCk7XG4gIH1cblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmFwb2xsby5nZXRDbGllbnQoKS5yZXNldFN0b3JlKCk7XG4gIH1cblxuICByZXN0b3JlKHN0YXRlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmFwb2xsby5nZXRDbGllbnQoKS5yZXN0b3JlKHN0YXRlKTtcbiAgfVxufVxuIl19