undux
Version:
Dead simple state management for React
111 lines • 4.25 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createStore = exports.StoreDefinition = exports.StoreSnapshot = void 0;
var emitter_1 = require("./emitter");
var utils_1 = require("./utils");
/**
* Immutable snapshot of the current store state. One StoreSnapshot per
* StoreDefinition is usually alive at a time.
*/
var StoreSnapshot = /** @class */ (function () {
function StoreSnapshot(state, storeDefinition) {
this.state = state;
this.storeDefinition = storeDefinition;
}
StoreSnapshot.prototype.get = function (key) {
return this.state[key];
};
StoreSnapshot.prototype.set = function (key) {
return this.storeDefinition.set(key);
};
StoreSnapshot.prototype.setFrom_EXPERIMENTAL = function (f) {
return this.storeDefinition.setFrom_EXPERIMENTAL(f);
};
StoreSnapshot.prototype.on = function (key) {
return this.storeDefinition.on(key);
};
StoreSnapshot.prototype.onAll = function () {
return this.storeDefinition.onAll();
};
StoreSnapshot.prototype.getState = function () {
return Object.freeze(this.state);
};
return StoreSnapshot;
}());
exports.StoreSnapshot = StoreSnapshot;
var DEFAULT_OPTIONS = {
isDevMode: false,
};
/**
* We create a single instance of this per <Container />.
*/
var StoreDefinition = /** @class */ (function () {
function StoreDefinition(state, options) {
var _this = this;
// Initialize emitters
this.alls = new emitter_1.Emitter(options.isDevMode);
this.emitter = new emitter_1.Emitter(options.isDevMode);
// Set initial state
this.storeSnapshot = new StoreSnapshot(state, this);
// Cache setters
this.setters = (0, utils_1.mapValues)(state, function (v, key) { return function (value) {
var _a;
var previousValue = _this.storeSnapshot.get(key);
_this.storeSnapshot = new StoreSnapshot(Object.assign({}, _this.storeSnapshot.getState(), (_a = {}, _a[key] = value, _a)), _this);
_this.emitter.emit(key, value);
_this.alls.emit(key, { key: key, previousValue: previousValue, value: value });
}; });
}
StoreDefinition.prototype.on = function (key) {
return this.emitter.on(key);
};
StoreDefinition.prototype.onAll = function () {
return this.alls.all();
};
StoreDefinition.prototype.get = function (key) {
return this.storeSnapshot.get(key);
};
StoreDefinition.prototype.set = function (key) {
return this.setters[key];
};
StoreDefinition.prototype.setFrom_EXPERIMENTAL = function (f) {
return f(this.storeSnapshot);
};
StoreDefinition.prototype.getCurrentSnapshot = function () {
return this.storeSnapshot;
};
StoreDefinition.prototype.toStore = function () {
return this.storeSnapshot;
};
StoreDefinition.prototype.getState = function () {
return this.storeSnapshot.getState();
};
return StoreDefinition;
}());
exports.StoreDefinition = StoreDefinition;
/**
* @deprecated Use `createConnectedStore` instead.
*/
function createStore(initialState, options) {
if (options === void 0) { options = DEFAULT_OPTIONS; }
return new StoreDefinition(initialState, options);
}
exports.createStore = createStore;
__exportStar(require("./plugins/withLogger"), exports);
__exportStar(require("./plugins/withReduxDevtools"), exports);
__exportStar(require("./react"), exports);
//# sourceMappingURL=index.js.map