pushinka
Version:
Pushinka: Transactional, Reactive, and Asynchronous State Management
33 lines • 1.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var Utils_1 = require("./Utils");
var XRecord = (function () {
function XRecord(prev, tran, data) {
this.prev = { record: prev, backup: prev };
this.tran = tran;
this.data = data;
this.edits = new Set();
this.conflicts = new Map();
this.observers = new Map();
this.overwritten = new Set();
}
XRecord.prototype.seal = function (proxy) {
var _this = this;
Object.freeze(this.data);
this.edits.forEach(function (prop) {
var val = _this.data[prop];
if (Array.isArray(val) && !Object.isFrozen(val))
Utils_1.Utils.freezeArray(val, { object: proxy, prop: prop });
});
Utils_1.Utils.freezeSet(this.edits);
Utils_1.Utils.freezeMap(this.conflicts);
Object.freeze(this);
};
XRecord.dismiss = function (r) {
if (r)
Utils_1.Utils.freezeMap(r.observers);
};
return XRecord;
}());
exports.XRecord = XRecord;
//# sourceMappingURL=Record.js.map