| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148 |
1
1
39
1
1
1
39
39
39
39
69
69
39
1
5
5
17
17
44
44
130
69
69
69
69
28
24
28
28
7
7
21
28
69
69
69
21
20
19
1
1
21
7
6
1
1
1
1
1
1
28
| "use strict";
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
var _prototypeProperties = function (child, staticProps, instanceProps) { Iif (staticProps) Object.defineProperties(child, staticProps); Eif (instanceProps) Object.defineProperties(child.prototype, instanceProps); };
var _classCallCheck = function (instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
/**
* Actions
*
* Instances of the Actions class represent a set of actions. (In Flux parlance,
* these might be more accurately denoted as Action Creators, while Action
* refers to the payload sent to the dispatcher, but this is... confusing. We
* will use Action to mean the function you call to trigger a dispatch.)
*
* Create actions by extending from the base Actions class and adding methods.
* All methods on the prototype (except the constructor) will be
* converted into actions. The return value of an action is used as the body
* of the payload sent to the dispatcher.
*/
var uniqueId = _interopRequire(require("uniqueid"));
var Actions = (function () {
function Actions() {
_classCallCheck(this, Actions);
this._baseId = uniqueId();
var methodNames = this._getActionMethodNames();
for (var i = 0; i < methodNames.length; i++) {
var methodName = methodNames[i];
this._wrapAction(methodName);
}
this.getConstants = this.getActionIds;
}
_prototypeProperties(Actions, null, {
getActionIds: {
value: function getActionIds() {
var _this = this;
return this._getActionMethodNames().reduce(function (result, actionName) {
result[actionName] = _this[actionName]._id;
return result;
}, {});
},
writable: true,
configurable: true
},
_getActionMethodNames: {
value: function _getActionMethodNames(instance) {
var _this = this;
return Object.getOwnPropertyNames(this.constructor.prototype).filter(function (name) {
return name !== "constructor" && typeof _this[name] === "function";
});
},
writable: true,
configurable: true
},
_wrapAction: {
value: function _wrapAction(methodName) {
var _this = this;
var originalMethod = this[methodName];
var actionId = this._createActionId(methodName);
var action = function () {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var body = originalMethod.apply(_this, args);
if (isPromise(body)) {
var promise = body;
_this._dispatchAsync(actionId, promise, args, methodName);
} else {
_this._dispatch(actionId, body, args, methodName);
}
// Return original method's return value to caller
return body;
};
action._id = actionId;
this[methodName] = action;
},
writable: true,
configurable: true
},
_createActionId: {
/**
* Create unique string constant for an action method, using
* @param {string} methodName - Name of the action method
*/
value: function _createActionId(methodName) {
return "" + this._baseId + "-" + methodName;
},
writable: true,
configurable: true
},
_dispatch: {
value: function _dispatch(actionId, body, args, methodName) {
if (typeof this.dispatch === "function") {
if (typeof body !== "undefined") {
this.dispatch(actionId, body, args);
}
} else {
Eif (process.env.NODE_ENV !== "production") {
console.warn("You've attempted to perform the action " + ("" + this.constructor.name + "#" + methodName + ", but it hasn't been added ") + "to a Flux instance.");
}
}
return body;
},
writable: true,
configurable: true
},
_dispatchAsync: {
value: function _dispatchAsync(actionId, promise, args, methodName) {
if (typeof this.dispatchAsync === "function") {
return this.dispatchAsync(actionId, promise, args);
} else {
Eif (process.env.NODE_ENV !== "production") {
console.warn("You've attempted to perform the asynchronous action " + ("" + this.constructor.name + "#" + methodName + ", but it hasn't been added ") + "to a Flux instance.");
}
return promise;
}
},
writable: true,
configurable: true
}
});
return Actions;
})();
module.exports = Actions;
function isPromise(value) {
return value && typeof value.then === "function";
}
//# sourceMappingURL=data:application/json;base64,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QUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssWUFBWSxFQUFFO0FBQ3pDLG1CQUFPLENBQUMsSUFBSSxDQUNWLGtEQUNHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxTQUFJLFVBQVUsaUNBQTZCLHdCQUM5QyxDQUN0QixDQUFDO1dBQ0g7U0FDRjs7QUFFRCxlQUFPLElBQUksQ0FBQztPQUNiOzs7O0FBRUQsa0JBQWM7YUFBQSx3QkFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7QUFDbEQsWUFBSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssVUFBVSxFQUFFO0FBQzVDLGlCQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNwRCxNQUFNO0FBQ0wsY0FBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxZQUFZLEVBQUU7QUFDekMsbUJBQU8sQ0FBQyxJQUFJLENBQ1YsK0RBQ0csSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFNBQUksVUFBVSxpQ0FBNkIsd0JBQzlDLENBQ3RCLENBQUM7V0FDSDs7QUFFRCxpQkFBTyxPQUFPLENBQUM7U0FDaEI7T0FFRjs7Ozs7O1NBOUZrQixPQUFPOzs7aUJBQVAsT0FBTzs7O0FBa0c1QixTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUU7QUFDeEIsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQztDQUNsRCIsImZpbGUiOiJzcmMvQWN0aW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWN0aW9uc1xuICpcbiAqIEluc3RhbmNlcyBvZiB0aGUgQWN0aW9ucyBjbGFzcyByZXByZXNlbnQgYSBzZXQgb2YgYWN0aW9ucy4gKEluIEZsdXggcGFybGFuY2UsXG4gKiB0aGVzZSBtaWdodCBiZSBtb3JlIGFjY3VyYXRlbHkgZGVub3RlZCBhcyBBY3Rpb24gQ3JlYXRvcnMsIHdoaWxlIEFjdGlvblxuICogcmVmZXJzIHRvIHRoZSBwYXlsb2FkIHNlbnQgdG8gdGhlIGRpc3BhdGNoZXIsIGJ1dCB0aGlzIGlzLi4uIGNvbmZ1c2luZy4gV2VcbiAqIHdpbGwgdXNlIEFjdGlvbiB0byBtZWFuIHRoZSBmdW5jdGlvbiB5b3UgY2FsbCB0byB0cmlnZ2VyIGEgZGlzcGF0Y2guKVxuICpcbiAqIENyZWF0ZSBhY3Rpb25zIGJ5IGV4dGVuZGluZyBmcm9tIHRoZSBiYXNlIEFjdGlvbnMgY2xhc3MgYW5kIGFkZGluZyBtZXRob2RzLlxuICogQWxsIG1ldGhvZHMgb24gdGhlIHByb3RvdHlwZSAoZXhjZXB0IHRoZSBjb25zdHJ1Y3Rvcikgd2lsbCBiZVxuICogY29udmVydGVkIGludG8gYWN0aW9ucy4gVGhlIHJldHVybiB2YWx1ZSBvZiBhbiBhY3Rpb24gaXMgdXNlZCBhcyB0aGUgYm9keVxuICogb2YgdGhlIHBheWxvYWQgc2VudCB0byB0aGUgZGlzcGF0Y2hlci5cbiAqL1xuXG5pbXBvcnQgdW5pcXVlSWQgZnJvbSAndW5pcXVlaWQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBY3Rpb25zIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIHRoaXMuX2Jhc2VJZCA9IHVuaXF1ZUlkKCk7XG5cbiAgICBsZXQgbWV0aG9kTmFtZXMgPSB0aGlzLl9nZXRBY3Rpb25NZXRob2ROYW1lcygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWV0aG9kTmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBtZXRob2ROYW1lID0gbWV0aG9kTmFtZXNbaV07XG4gICAgICB0aGlzLl93cmFwQWN0aW9uKG1ldGhvZE5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMuZ2V0Q29uc3RhbnRzID0gdGhpcy5nZXRBY3Rpb25JZHM7XG4gIH1cblxuICBnZXRBY3Rpb25JZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldEFjdGlvbk1ldGhvZE5hbWVzKCkucmVkdWNlKChyZXN1bHQsIGFjdGlvbk5hbWUpID0+IHtcbiAgICAgIHJlc3VsdFthY3Rpb25OYW1lXSA9IHRoaXNbYWN0aW9uTmFtZV0uX2lkO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCB7fSk7XG4gIH1cblxuICBfZ2V0QWN0aW9uTWV0aG9kTmFtZXMoaW5zdGFuY2UpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUpXG4gICAgICAuZmlsdGVyKG5hbWUgPT5cbiAgICAgICAgbmFtZSAhPT0gJ2NvbnN0cnVjdG9yJyAmJlxuICAgICAgICB0eXBlb2YgdGhpc1tuYW1lXSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgKTtcbiAgfVxuXG4gIF93cmFwQWN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICBsZXQgb3JpZ2luYWxNZXRob2QgPSB0aGlzW21ldGhvZE5hbWVdO1xuICAgIGxldCBhY3Rpb25JZCA9IHRoaXMuX2NyZWF0ZUFjdGlvbklkKG1ldGhvZE5hbWUpO1xuXG4gICAgbGV0IGFjdGlvbiA9ICguLi5hcmdzKSA9PiB7XG4gICAgICBsZXQgYm9keSA9IG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgICBpZiAoaXNQcm9taXNlKGJvZHkpKSB7XG4gICAgICAgIGxldCBwcm9taXNlID0gYm9keTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2hBc3luYyhhY3Rpb25JZCwgcHJvbWlzZSwgYXJncywgbWV0aG9kTmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChhY3Rpb25JZCwgYm9keSwgYXJncywgbWV0aG9kTmFtZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJldHVybiBvcmlnaW5hbCBtZXRob2QncyByZXR1cm4gdmFsdWUgdG8gY2FsbGVyXG4gICAgICByZXR1cm4gYm9keTtcbiAgICB9O1xuXG4gICAgYWN0aW9uLl9pZCA9IGFjdGlvbklkO1xuXG4gICAgdGhpc1ttZXRob2ROYW1lXSA9IGFjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdW5pcXVlIHN0cmluZyBjb25zdGFudCBmb3IgYW4gYWN0aW9uIG1ldGhvZCwgdXNpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUgLSBOYW1lIG9mIHRoZSBhY3Rpb24gbWV0aG9kXG4gICAqL1xuICBfY3JlYXRlQWN0aW9uSWQobWV0aG9kTmFtZSkge1xuICAgIHJldHVybiBgJHt0aGlzLl9iYXNlSWR9LSR7bWV0aG9kTmFtZX1gO1xuICB9XG5cbiAgX2Rpc3BhdGNoKGFjdGlvbklkLCBib2R5LCBhcmdzLCBtZXRob2ROYW1lKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmRpc3BhdGNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2goYWN0aW9uSWQsIGJvZHksIGFyZ3MpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYFlvdSd2ZSBhdHRlbXB0ZWQgdG8gcGVyZm9ybSB0aGUgYWN0aW9uIGBcbiAgICAgICAgKyBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9IyR7bWV0aG9kTmFtZX0sIGJ1dCBpdCBoYXNuJ3QgYmVlbiBhZGRlZCBgXG4gICAgICAgICsgYHRvIGEgRmx1eCBpbnN0YW5jZS5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cblxuICBfZGlzcGF0Y2hBc3luYyhhY3Rpb25JZCwgcHJvbWlzZSwgYXJncywgbWV0aG9kTmFtZSkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5kaXNwYXRjaEFzeW5jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaEFzeW5jKGFjdGlvbklkLCBwcm9taXNlLCBhcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBZb3UndmUgYXR0ZW1wdGVkIHRvIHBlcmZvcm0gdGhlIGFzeW5jaHJvbm91cyBhY3Rpb24gYFxuICAgICAgICArIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0jJHttZXRob2ROYW1lfSwgYnV0IGl0IGhhc24ndCBiZWVuIGFkZGVkIGBcbiAgICAgICAgKyBgdG8gYSBGbHV4IGluc3RhbmNlLmBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gIH1cblxufVxuXG5mdW5jdGlvbiBpc1Byb21pc2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSAnZnVuY3Rpb24nO1xufVxuIl19 |