UNPKG

undux

Version:

Dead simple state management for React

111 lines 4.25 kB
"use strict"; 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