unstated-enhancers
Version:
Unstated tools for state management
94 lines (93 loc) • 3.59 kB
JavaScript
;
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);
};
Object.defineProperty(exports, "__esModule", { value: true });
var unstated = require("unstated");
var queue_1 = require("./support/queue");
var __SUPER_SECRET_CONTAINER_DEBUG_HOOK__ = unstated.__SUPER_SECRET_CONTAINER_DEBUG_HOOK__;
var Manager = /** @class */ (function () {
function Manager() {
this.__containers = {};
this.beauty = false;
}
Manager.prototype.run = function () {
this.start();
};
Manager.prototype.config = function (config) {
for (var _i = 0, _a = Object.entries(config); _i < _a.length; _i++) {
var _b = _a[_i], key = _b[0], value = _b[1];
this[key] = value;
}
};
Manager.prototype.store = function () {
var store = {};
for (var _i = 0, _a = Object.entries(this.__containers); _i < _a.length; _i++) {
var _b = _a[_i], key = _b[0], value = _b[1];
store[key] = value.state;
}
return store;
};
Manager.prototype.all = function () {
var containers = {};
for (var _i = 0, _a = Object.entries(this.__containers); _i < _a.length; _i++) {
var _b = _a[_i], key = _b[0], value = _b[1];
containers[key] = value;
}
return containers;
};
Manager.prototype.raise = function (method, params) {
if (params === void 0) { params = {}; }
for (var _i = 0, _a = Object.values(this.__containers); _i < _a.length; _i++) {
var container = _a[_i];
if (container[method] && typeof container[method] === 'function') {
container[method](params);
}
}
};
Manager.prototype.reset = function () {
for (var _i = 0, _a = Object.values(this.__containers); _i < _a.length; _i++) {
var container = _a[_i];
var props = {};
if (container.persist) {
props._persist_version = container.state._persist_version;
}
container.state = __assign(__assign({}, container.__containerInitialState), props);
}
};
Manager.prototype.get = function (name) {
return this.__containers[name];
};
Manager.prototype.print = function () {
var style = "color: inherit; font-weight: bold";
for (var _i = 0, _a = Object.entries(this.__containers); _i < _a.length; _i++) {
var _b = _a[_i], key = _b[0], value = _b[1];
console.log("%c " + key + " \u2192 ", style, value);
}
};
Manager.prototype.start = function () {
var _this = this;
__SUPER_SECRET_CONTAINER_DEBUG_HOOK__(function (container) {
var bootstrap = function () { return _this.bootstrap(container); };
queue_1.default(bootstrap);
});
};
Manager.prototype.bootstrap = function (container) {
var name = container.name || container.constructor.name;
container.__containerInitialState = container.state || container.constructor.state || {};
if (this.beauty) {
name = name.replace(/container$/ig, '');
}
this.__containers[name] = container;
};
return Manager;
}());
exports.default = Manager;