UNPKG

typedux

Version:

Slightly adjusted Redux (awesome by default) for TS

92 lines 3.44 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; (function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "./ActionTypes", "../util"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ActionTracker = void 0; var ActionTypes_1 = require("./ActionTypes"); var util_1 = require("../util"); /** * Wraps an action providing tracking events and data */ var ActionTracker = /** @class */ (function () { /** * Create new action tracker * * @param leaf * @param name * @param action * @param id * @param store */ function ActionTracker(id, leaf, name, action, store) { var _this = this; this.id = id; this.leaf = leaf; this.name = name; this.action = action; this.store = store; /** * Action Status * * @type {ActionStatus} */ this.status = ActionTypes_1.ActionStatus.Started; var InternalActionFactory = require("../internal/InternalActionFactory").InternalActionFactory, internalActions = new InternalActionFactory(store); this._promise = new util_1.Bluebird(function (resolve, reject) { Object.assign(_this, { reject: reject, resolve: resolve }); try { internalActions.setPendingAction(_this); var dispatch = function (action) { return store === null || store === void 0 ? void 0 : store.dispatch(action); }, getState = function () { return store === null || store === void 0 ? void 0 : store.getState(); }, result = action(dispatch, getState); // UNWRAP PROMISE util_1.Bluebird .resolve(result) .then(resolve) .catch(reject); } catch (err) { reject(err); } }).finally(function () { // FINALLY NOTIFY INTERNAL STATE _this.status = ActionTypes_1.ActionStatus.Finished; internalActions.setPendingAction(__assign({}, _this)); }); } Object.defineProperty(ActionTracker.prototype, "promise", { /** * Get the underlying promise * * @returns {Promise<T>} */ get: function () { return this._promise; }, enumerable: false, configurable: true }); return ActionTracker; }()); exports.ActionTracker = ActionTracker; }); //# sourceMappingURL=ActionTracker.js.map