@loona/angular
Version:
App State Management done with GraphQL (angular integration)
166 lines • 13.3 kB
JavaScript
/**
* @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